A small tool for deploying crontab jobs into a unix-like system, eg. Linux/Mac from python.
cronpi makes jobs more human readable and works on both 2.X and 3.X version.
pip install cronpi
cronpi has following functions
SN | Name | Description |
---|---|---|
1. | run_by_date | job that runs just by setting date in format YYYY-MM-DD HH:mm |
2. | run_every_day | job that runs every day at given time HH:mm |
3. | run_every_week | job that runs every week at the given time of given weekdays |
4. | run_every_month | job that runs every month at the given time of given days of a month |
5. | run_every_year | job that runs at the given time of given days of given months |
6. | run_custom | command will be exactly similar to single line which we write during "crontab -e" |
Each functions take two parameters
parameter | type | description |
---|---|---|
command | string | This command will be executed as scheduled |
isOverwrite | bool | It is optional and default value is false, which means cronpi will always insert new job |
cronpi will always install a new cron job if only command is passed as parameter or isOverwrite is set to False. If command passed as first parameter already exists in cronjon and "isOverwrite=True" is passed as second parameter ,then it will update the time of running the job instead of adding new job.
cronpi.XXXX("/some/command", isOverwrite=True)
Time used as parameter can contain or may not contain AM|PM prefix. For eg, following two parameters represent same time.
5:30pm = 17:30
- Run a job at 20th october 2020 at 5:30PM
import cronpi
cronpi.run_by_date("/some/command").on("2020-10-20 5:30pm")
※ This command will run every year after if the command is not deleted from crontab manually.
- Run a job daily at 5:30PM
import cronpi
cronpi.run_every_day("/some/command").on("5:30pm")
- Run a job at every sunday at 5:30PM
import cronpi
cronpi.run_every_week("/some/command").on("sunday", time="17:30")
- Run a job at every saturday and sunday at 5:30PM
import cronpi
cronpi.run_every_week("/some/command").on(["sat", "sun"], time="5:30PM")
- Run a job at every 10th of a month at 5:30PM
import cronpi
cronpi.run_every_month("/some/command").on(10, time="17:30")
- Run a job at every 10th and 20th of a month at 5:30PM
import cronpi
cronpi.run_every_month("/some/command").on([10,20], time="17:30")
- Run a job at every 10th january at 5:30am
import cronpi
cronpi.run_every_year("/some/command").on("january", day=10, time="5:30am")
- Run a job at every 10th of january, april and october at 5:30AM
import cronpi
cronpi.run_every_year("/some/command").on(["jan", "oct"], day=10, time="5:30")
Add a job to crontab by passing the command that we input to "crontab -e" command.
- Run a job that runs at every minute
import cronpi
cronpi.run_custom("* * * * * /some/command")
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │ 7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execut
cronpi has a helper function named "get_job_list" which will retrive the the job items in list.
import cronpi
cronpi.get_job_list()
- restructured the library format so that it is more human readable.
cronpi.run_every_month("/some/command")
.on([10,20], time="1:30AM")
- released first version