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.