linux_wiki:cron

This is an old revision of the document!


Cron

General Information

Automating tasks with cron (the daemon that executes scheduled commands).

Checklist

  • Distro(s): Any

User Crontabs

Individual users can create/edit their own cron jobs.


List your user's crontab jobs

crontab -l


Edit your crontab

crontab -e


User crontabs are stored at:

  • /var/spool/cron/<username>
  • /etc/cron.allow
  • /etc/cron.deny

About these files:

  • One username per line
  • Root can always use crontab, regardless of file existence below
cron.allow cron.deny Result
file exists file exists Only users in cron.allow are allowed
no file file exists All users allowed except those in cron.deny
file exists no file Only users in cron.allow are allowed
no file no file Only root is allowed to use crontab

For any below, asterisk means all values.

# .---------------- 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) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  command to be executed

Executes script.sh at 0600,0630,1200,and 1230 every day of the month, every month, and everyday of the week.

0,30 6,12 * * * /home/user/script.sh

Executes script.sh every minute.

* * * * * /home/user/script.sh

Executes script.sh every 5 minutes.

*/5 * * * * /home/user/script.sh

Executes script.sh on system startup.

@reboot /home/user/script.sh

System Cron Jobs

To run jobs in the system directories, look to /etc.

  • /etc/cron.d/ = system executed jobs (format like crontab)
  • /etc/cron.daily/ = daily executed scripts (format bash script)
  • /etc/cron.hourly/ = hourly executed scripts (format bash script)
  • /etc/cron.monthly/ = monthly executed scripts (format bash script)
  • /etc/cron.weekly/ = weekly executed scripts (format bash script)
  • /etc/crontab = system wide crontab

It is recommended to drop scripts into one of the /etc/cron.* directories instead of editing the system wide crontab file.

All formats are bash scripts, except for the /etc/cron.d/ directory, which accepts crontab formatted files, with the addition of specifying a username.

For example, /etc/cron.d/crashplan-mirror:

# .---------------- 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) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
 
# Rsync the crashplan backups to another usb drive for redundancy
0 2,14 * * * root /root/scripts/rsync_cp_mirror.sh

The above executes at 0200 and 1400, runs as the user root, the script specified.


Cron Keywords

Keywords that can be used in place of a specific time/date schedule.

  • @reboot - Run once at start up.
  • @yearly - Run once a year.
  • @annually - Same as yearly.
  • @monthly - Run once a month.
  • @weekly - Run once a week.
  • @daily - Run once a day.
  • @midnight - Same as daily.
  • @hourly - Run once an hour.

  • linux_wiki/cron.1504473801.txt.gz
  • Last modified: 2019/05/25 23:50
  • (external edit)