On 2012-07-12, at 9:04 PM, Sean Walberg wrote:
I'd use a lock file just to be safe. Depending on how "restart-daemon" works you might end up with a race condition inside there, resulting in no daemon getting run until the next pass.
The easiest way would be
lock="/var/run/mylock" if [ -f $lock ]; then exit 1; else touch $lock; fi #do your magic rm $lock
There are other utilities like flock and lockfile if you are really concerned about re-entrancy, and depending on the user you run this script as, you may want to put $lock out of a normal user's reach. But to protect something running from cron, this will be more than enough.
Sean
Sean beat me to it! :)
The only thing I have to add is that (if you are using bash and a recent release) that you trap as many signals as possible (post lock file creation) and in that trap remove the lock file. Otherwise you are in a fun state where everything looks alright but isn't running because the lock didn't get removed for a random number of reasons.
ie.
trap "rm $lock" SIGINT SIGHUP SIGTERM SIGALRM
eg 2. #!/bin/bash LOCKFILE=/var/run/mylock
[ -f $LOCKFILE ] && exit 0 trap "{ rm -f $LOCKFILE ; exit 255; }" SIGINT SIGHUP SIGTERM SIGALRM EXIT touch $LOCKFILE # do your magic here exit 0 # note this will call the trap. :)