Inevitably, you’ll have to write a post-install routine in Python that has to schedule a Cron job. For this, python-crontab is a great solution.
Create the job using the following. This will not commit the changes, yet.
from crontab import CronTab cron = CronTab() job = cron.new(command='/usr/bin/tool')
There are at least three ways to configure the schedule:
Using method calls:
job.minute.during(5,50).every(5) job.hour.every(4)
Using an existing crontab row:
job.parse("* * * * * /usr/bin/tool")
Obviously in the last case, you can omit the command when we created the job.
Using an alias:
job.special = '@daily'
You can commit your changes by then calling:
job.write()
This is a very limited introduction that elaborates on how to use aliases and parsing to schedule, since the documentation doesn’t go into it, but omits other features such as:
- indicating the user to schedule for (the default is “root”)
- finding existing jobs by command or comment
- enumerating jobs
- enumerating the schedule that a particular job will follow
- enumerating the logs for a particular job
- removing jobs
- editing a crontab file directly, or building one in-memory
- enabling/disabling jobs
The official documentation (follow the link, above) describes all of the features on this list.