Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: killing command if it takes too much time

by Argel (Prior)
on Feb 10, 2011 at 00:02 UTC ( #887317=note: print w/replies, xml ) Need Help??

in reply to killing command if it takes too much time

If you are okay with (or want) to kill the command that's taking too long then eval+alarm may be what you are looking for. Maybe this code will give you some ideas:
sub cmd_wrapper { my $timeout = shift; my $cmd = shift; my( $out, $rc ); eval { local $SIG{ALRM} = sub { die "alarm\n" }; alarm $timeout; $out = (`$cmd`)[0]; # Get first line of output $rc = $?; alarm 0; }; if( $@ ) { die "Eval failed for $cmd for unknown/unexpected reasons" if $ +@ ne "alarm\n"; die "Eval failed for $cmd because alarm timed out"; } die "Return code undefined for $cmd" unless defined $rc; return $rc, $out if wantarray; return $rc; } my $rc = cmd_wrapper(300, $pull_cmd); # Will timeout in 5 minutes (300 + seconds) # Add your logging here

Elda Taluta; Sarks Sark; Ark Arks

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://887317]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (7)
As of 2018-05-23 14:05 GMT
Find Nodes?
    Voting Booth?