Sponsored Content
Top Forums Shell Programming and Scripting error situation handling when starting app from a script Post 302696697 by TomSu on Wednesday 5th of September 2012 09:51:58 AM
Old 09-05-2012
error situation handling when starting app from a script

Hi,
in my bash script I start 3rd party app that runs quickly normally and returns some data that I use later for processing. However if there are problems the app doesn't return anything and just hangs... then my script also hangs of course, awaiting for the app to comeback. Was wondering how to avoid that so the script could carry on or at least bailout with an error if that happens. Is there a way to do it in bash ?

Code:
get_proc_stats() {
     port=$1
     tstats=`app $port`
}

I was thinking maybe I could start/fork seperate process in background which would then check the main process somehow, maybe sending a signal USR1 and then the main process would be maybe writing something to some temp. file and forked process runnig in background would be checking if update to temp. file happend, if not then it could wait some time and kill the main process ?
What do you think?

Any hints on that appreciated,
Cheers,
Tomasz


Moderator's Comments:
Mod Comment Please use code tags next time for your code and data.

Last edited by zaxxon; 09-05-2012 at 10:54 AM.. Reason: code tags
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

how to capture my app starting up.

This is the script for the cold backup that we get from mycat every time it goes down and up again. It's a huge email that we get and all within the body. Here is the dilemma; I would like to capture just the “”successful start up of the luminis app.”” I don't know if I need to do an “if... (1 Reply)
Discussion started by: parente
1 Replies

2. HP-UX

help auto starting app on boot

Hi I need a bit of help figuring out how to auto start an application on boot on an HPUX. I am a fairly exp AIX guy now working an HP shop. I use to change a /etc/rc... file. Any advise would be a great help TIA. –K If it is a help the program is a DB and runs as root /usr/ud{##}/startud... (3 Replies)
Discussion started by: KmJohnson
3 Replies

3. Shell Programming and Scripting

Issue with Error handling,not able to continue the script further

Hi, I am trying to write a script to cleanup files in a log directory .. cd log find Datk** -mtime +7 -exec rm -f {} \; 2> /dev/null Have used the above to clean up files in log directory more then 7 days older. The file can be something like ( auto-generate by some processes and... (2 Replies)
Discussion started by: nss280
2 Replies

4. Shell Programming and Scripting

Help with Error Handling on Script

Hi, I need your guys help again. I run a script which check for some process status in a loop. when i check the process some of the process could throw an error, how can i check that inside my script. Thanks, RR (3 Replies)
Discussion started by: rrb2009
3 Replies

5. Shell Programming and Scripting

Calling a Perl script in a Bash script -Odd Situation

I am creating a startup script for an application. This application's startup script is in bash. It will also need to call a perl script (which I will not be able to modify) for the application environment prior to calling the application. The problem is that this perl script creates a new shell... (5 Replies)
Discussion started by: leepet01
5 Replies

6. Shell Programming and Scripting

Expect Script Error Handling

Good Day Everyone, I was hoping to get a little insight into an expect script that I've written. Basically we have this expect script to perform an sftp upload, key authentication is not an option, and sftp is the only method supported by our vendor, thus the need for this. I want to be... (3 Replies)
Discussion started by: thaller
3 Replies

7. Shell Programming and Scripting

Help me add Error Handling to my script

Hi all, I have some sections of a script that I am trying to add error handling to. Basically if it returns any error, just continue. This is for a deployment script that i am writing to assist in the deployment of scripts out to other systems. At the top of my KSH script i added this... (5 Replies)
Discussion started by: nitrobass24
5 Replies

8. Shell Programming and Scripting

Error handling

Hello fellow UNIX gurus :) I have a problem regarding the script below: # Variables used in this shell. power=0 # Stores squared integer total=0 # Sum of all squared integers num=0 # Stores command line arguements # Provides error handling if command line... (5 Replies)
Discussion started by: Learn4Life
5 Replies

9. Shell Programming and Scripting

Script FTP maintain error handling

Hi, I have ftp script like below How to insert an error handling, If the transfer failed then send mail to me. Actually, I just need the script to send an email if the FTP failed. How to put the email script within FTP script? Thank You Edy (5 Replies)
Discussion started by: edydsuranta
5 Replies

10. Programming

Wuhan Coronavirus Status App for China - Rapid Prototype using MQTT and the IoT OnOff IOS App

With a little bit of work, was able to build a nice "Wuhan Coronavirus Status" app using MQTT and the IoT-OnOff app. More on this technique here: ESP32 (ESP-WROOM-32) as an MQTT Client Subscribed to Linux Server Load Average Messages The result turned out nice, I think. I like the look and... (10 Replies)
Discussion started by: Neo
10 Replies
Plack::Middleware(3pm)					User Contributed Perl Documentation				    Plack::Middleware(3pm)

NAME
Plack::Middleware - Base class for easy-to-use PSGI middleware SYNOPSIS
package Plack::Middleware::Foo; use parent qw( Plack::Middleware ); sub call { my($self, $env) = @_; # Do something with $env # $self->app is the original app my $res = $self->app->($env); # Do something with $res return $res; } # then in app.psgi use Plack::Builder; my $app = sub { ... } # as usual builder { enable "Plack::Middleware::Foo"; enable "Plack::Middleware::Bar", %options; $app; }; DESCRIPTION
Plack::Middleware is a utility base class to write PSGI middleware. All you have to do is to inherit from Plack::Middleware and then implement the callback "call" method (or "to_app" method that would return the PSGI code reference) to do the actual work. You can use "$self->app" to call the original (wrapped) application. Your middleware object is created at a PSGI application compile time and is persistent during the web server life cycle (unless it is a non-persistent environment such as CGI), so you should never set or cache per-request data like $env in your middleware object. See also "OBJECT LIFECYCLE" in Plack::Component. See Plack::Builder how to actually enable middleware in your .psgi application file using the DSL. If you do not like our builder DSL, you can also use "wrap" method to wrap your application with a middleware: use Plack::Middleware::Foo; my $app = sub { ... }; $app = Plack::Middleware::Foo->wrap($app, %options); $app = Plack::Middleware::Bar->wrap($app, %options); RESPONSE CALLBACK
The typical middleware is written like this: package Plack::Middleware::Something; use parent qw(Plack::Middleware); sub call { my($self, $env) = @_; # pre-processing $env my $res = $self->app->($env); # post-processing $res return $res; } The tricky thing about post processing the response is that it could either be an immediate 3 element array ref, or a code reference that implements the delayed (streaming) interface. Dealing with these two types of response in each piece of middleware is pointless, so you're recommended to use the "response_cb" wrapper function in Plack::Util when implementing a post processing middleware. my $res = $app->($env); Plack::Util::response_cb($res, sub { my $res = shift; # do something with $res; }); The callback function gets a PSGI response as a 3 element array reference, and you can update the reference to implement the post processing. package Plack::Middleware::Always500; use parent qw(Plack::Middleware); use Plack::Util; sub call { my($self, $env) = @_; my $res = $self->app->($env); Plack::Util::response_cb($res, sub { my $res = shift; $res->[0] = 500; return; }); } In this example, the callback gets the $res and updates its first element (status code) to 500. Using "response_cb" makes sure that this works with the delayed response too. You're not required (and not recommended either) to return a new array reference - they will be simply ignored. You're suggested to explicitly return, unless you fiddle with the content filter callback (see below). Similarly, note that you have to keep the $res reference when you swap the entire response. Plack::Util::response_cb($res, sub { my $res = shift; $res = [ $new_status, $new_headers, $new_body ]; # THIS DOES NOT WORK return; }); This does not work, since assigning a new anonymous array to $res doesn't update the original PSGI response value. You should instead do: Plack::Util::response_cb($res, sub { my $res = shift; @$res = ($new_status, $new_headers, $new_body); # THIS WORKS return; }); The third element of PSGI response array ref is a body, and it could be either array ref or IO::Handle-ish object. The application could also make use of $writer object if "psgi.streaming" is in effect. Dealing with these variants is again really painful, and "response_cb" can take care of that too, by allowing you to return a content filter as a code reference. # replace all "Foo" in content body with "Bar" Plack::Util::response_cb($res, sub { my $res = shift; return sub { my $chunk = shift; return unless defined $chunk; $chunk =~ s/Foo/Bar/g; return $chunk; } }); The callback takes one argument $chunk and your callback is expected to return the updated chunk. If the given $chunk is undef, it means the stream has reached the end, so your callback should also return undef, or return the final chunk and return undef when called next time. SEE ALSO
Plack Plack::Builder Plack::Component perl v5.14.2 2011-06-22 Plack::Middleware(3pm)
All times are GMT -4. The time now is 04:08 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy