Skip to content

Cron

The software utility cron is a time-based job scheduler. It's mainly a CLI tool.

cron and crontab

  • cron is daemon to execute scheduled commands. Configuration is historically stored in a file called crontab.
  • crontab is a tool that maintain crontab files for individual users.

crontab for beginners

Adding a task in crontab

To add new cron job to crontab, log with the user that should execute the job then

crontab –e

This opens vi editor for you. Create the cron command using the following syntax:

  • Field 1: The number of minutes after the hour (0 to 59)
  • Field 2: The hour in military time (24 hour) format (0 to 23)
  • Field 3: The day of the month (1 to 31)
  • Field 4: The month (1 to 12)
  • Field 5: The day of the week(0 or 7 is Sun, or use name)
  • Field 6: The command to run

More graphically they would look like this:

*     *     *     *     *  Command to be executed
^     ^     ^     ^     ^
|     |     |     |     |
|     |     |     |     +----- Day of week (0-7)
|     |     |     +------- Month (1 - 12)
|     |     +--------- Day of month (1 - 31)
|     +----------- Hour (0 - 23)
+------------- Min (0 - 59)

An example command would be

*/10 * * * * /path/to/command

This will run every 10 minutes /path/to/command

List existing jobs for current user

To list existing cron jobs:

crontab –l

Delete existing jobs for current user

To remove an existing cron job:

crontab –e

Delete the line that contains your cron job

Display crontab for all users

function show_all_crontab {
  local user
  local list

  for user in $( cat /etc/passwd | cut -d ':' -f1 ) ; do
    echo -n "cron for '${user}' "
    list="$( sudo crontab -u "${user}" -l )"
    if [ -n "${list}" ] ; then
      echo
      echo "${list}"
    fi
  done
}