in reply to Kill a script at a certain time
assuming your script goes into some sort of work loop you can check how long you've been running and exit if needed.
... my $stop_time = time + 60 * 60 * 7; # now + 7 hours while (1) { do_work; last if time > $stop_time; } ...
your script will stop the first chance it gets.
if you need immediate gratification the script will need to write a pidfile so you'll know which script to kill. (if there's only ever a single instance of your script running you can get away with the 'killall' solution.)
another alternative would be something like this...
... while (1) { do_work; if (-f '/tmp/script.die.die.die') { unlink '/tmp/script.die.die.die'; last; } ...
then you could have a crontab entry at 4p.m that just does a 'touch /tmp/script.die.die.die' and again your script would stop as soon as possible.
|
|---|