Mutual exclusion for cronjobs

Bug #917231 reported by Removed by request
6
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/share/python/backup_to_media.py
0 0 1 * * root /usr/local/share/python/backup_to_internet.py

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/share/python/backup_to_media.py
0 0 1 * * root 1 /usr/local/share/python/backup_to_internet.py

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/share/python/backup_to_media.py is executed first because it has a lower number and if it finishes /usr/local/share/python/backup_to_internet.py is executed.

This would prevent complicated entries in the crontab or own complex mutual exclusion to solve this problem.

description: updated
description: updated
description: updated
Revision history for this message
Christian Kastner (ckk) wrote :

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.

Revision history for this message
Removed by request (removed3425744) wrote :

> Fixing this in cron would not ensure mutual exclusion in the cases where these scripts are called by other means, eg manual calls.

I think we shouldn't consider external calls as this is out of cron's scope (if not builtin directly in the application flock's doesn't guarantee mutual exclusion too due to the lack of support for mandantory locks in the Linux kernel).

Revision history for this message
Markus Ueberall (ueberall) wrote :

For the record: There's https://github.com/poeml/withlock which can simply be put "between" cron and the applications in question…

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.