Mutual exclusion for cronjobs
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
cron (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
I'm using Ubuntu 12.04 dev with cron 3.0pl1-120ubuntu2. I encountered in the past a problem which can be solved with a new feature. Here is an example of the problem:
0 0 * * * root /usr/local/
0 0 1 * * root /usr/local/
These cronjobs do backup some data every day to a media and one time a month to the internet. The problem is on the first day of every month both backups are running at the same time. This can cause some problems like the backuped data to the internet is one day older as it should be or there are maybe exceptions because both jobs are accessing the files at the same time.
Maybe there could be a priority column which controls this:
0 0 * * * root 0 /usr/local/
0 0 1 * * root 1 /usr/local/
The priority column ensures that jobs which are running at the same time are excuted sequentially (if the priority of every job is the same number we will have the current behaviour). On the first day of every month /usr/local/
This would prevent complicated entries in the crontab or own complex mutual exclusion to solve this problem.
While an interesting concept, I believe cron is the wrong tool for this job. Fixing this in cron would not ensure mutual exclusion in the cases where these scripts are called by other means, eg manual calls.
The correct solution for backup_to_media and backup_to_file -- or any other program that needs to ensure mutual exclusion -- would be to create and flock a file, eg /var/lock/ backup_ run.