How to Schedule Crontab
Crontab has a robust scheduling system. There are 5 fields and you put a number in each to set the appropriate counter when your command or script triggers. The following examples will help you.
Scheduling in Crontab
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
-
fields are separated by spaces or tabs
-
commas can be used to specify a list
-
slashes can be used to step through every (ranges)
-
asteriks signify “all” for that field
Be careful of changing timezone. Your crontab could be affected each time you change them.
Crontab Schedule Examples
# hourly and don't mail it, send info to syslog
@hourly /path/to/script.sh >/dev/null 2>&1
# Create output log and watch for "ERROR" also create syslog
script.sh 2>&1 | tee -a output.log | grep -C 100 ERROR
# if as root, noon every day update
00 12 * * * apt-get update
# immediately after reboot (several issues though, recommended not to use)
@reboot /path/to/script.sh
# on reboot, mail uptime a
@reboot echo `uptime` | mail -s "`uname -n` rebooted" admin@site.com
# 60 seconds after reboot
@reboot sleep 60 && /path/to/script.sh
# every minute
*/1 * * * * /path/to/script.sh
# every hour on the 1st minute (1:01, 2:01, etc)
01 * * * * /path/to/script.sh
# every monday at midnight
0 0 * * MON /path/to/script.sh
# every midnight
0 0 * * * /path/to/script.sh
# every day at 9:15am
15 9 * * * /path/to/script.sh
# every other hour
0 */2 * * * /path/to/script.sh
You can type in and get human readable cron schedules by using this website: https://crontab.guru