On 2010-04-01 Kevin McGregor wrote:
I want to run something via cron which will take anywhere from less than a minute to a day or so (possibly). Most of the time it will be well under an hour, and I'd like it to run hourly, except if it's still running, in which case nothing more need be done.
To not worry about races, and still keep things simple: lock=~/lockfile-whatever lockfile -r 0 -l 86400 $lock >/dev/null 2>&1 || exit do_work rm -f $lock see man lockfile may not be terribly portable beyond linux(?) Play with the -l option or omit it. For your case you'd want to set it to the absolute max secs it could possibly take your program to run. Perl also has a ways to do locking. Note: "Lockfile is NFS-resistant": I have no idea what they mean by that, will it work or not? Pretty nifty if they have it working on NFSvX where X<4.