Run cron jobs safely, using locking. Cron lock prevents running a cronjob if the first one didn't finished running (prevents cron overlaps).
2 files are used:
- cron-job1.sh
- cron-job1.lock
Contents of cron-job1.lock will be:
- free - if it's free, cron-job1.sh is NOT running
- locked - if cron-job1.sh is running
Locking script (cron-job1.sh):
#!/bin/bash
lock_file="cron-job1.lock"
lock_content=`cat $lock_file`
if [[ "$lock_content" == "free" ]] ; then
echo "locked" > $lock_file
# do stuff here:
cd /some-dir
php compute-things.php
php email-results.php
echo "free" > $lock_file
else
echo "script already running, file $lock_file is not free"
fi
No comments:
Post a Comment