Cron Singleton
Fri 03 July 2015 by GodsonMany times we have to run some tasks periodically. 'Cron' is Linux utility intended for such taks.
Now consider following scenario.
You'r performing one non-deterministic task for every 5min using cron utility. And at one point, time to finish a task exceeds 5 min. What will happen in this case ? Another instance of task will be created. In worst case scenarios, there will be hundreds of instances of same task running, ultimately crashing system. To avoid such events, use cron singleton. This singleton ensures that at a time only one instance of taks will be running. Following is example of such singleton.
#!/bin/bash
lockfile=/var/tmp/bamlock
if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null; then
trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT
# run job
/opt/foo/bar/baz/qux.py
else
echo "Lock Exists: $lockfile owned by $(cat $lockfile)"
fi