-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Sat, Apr 07, 2007 at 10:30:10AM +0200, Jan-Frode Myklebust wrote:
On 2007-04-07, Shawn Everett shawn@tandac.com wrote:
Just building off Micheal's idea:
killafter.sh <command> <time> #!/bin/bash
$1 & pid=$! sleep $2 kill -TERM $pid
Just in case it might have died an recycled the pid, refer to the job (%1), not the pid:
killafter.sh <command> <time> #!bin/bash $1 & sleep $2 kill -TERM %1
Another way of doing it might be to fork a sub-shell with limits:
(ulimit -t 1 ; top)
But this is cputime, not walltime...
You guys are forgetting 2 things:
1) Maybe he doesn't want to run the process on the background.
This is somewhat easy to solve, with a little C program. You trap SIG_ALARM, fork, execp, and set and alarm. Another option would be to use wait/wait3/wait4 and alarm, which might be simpler. Or a combination of both.
but the main issue is
2) You are forgeting to take starting up time in consideration
Say a problem will take 2 seconds to start up, due to any reason (disk I/O, memory, swap etc). If you specify 4 seconds as the limit, the problem will actually run for only 2 seconds.
I have no idea how to solve this second issue.
[]s
- -- Rodrigo Barbosa "Quid quid Latine dictum sit, altum viditur" "Be excellent to each other ..." - Bill & Ted (Wyld Stallyns)