This is an old revision of the document!
Table of Contents
Task Scheduling in Linux
Overview
This article discusses some tools used in a Linux system to schedule tasks to run automatically at specified time intervals or at any given point of time in the future. This primer will not cover these commands in-depth; this is just a brief introduction to using these commands. See the individual HOWTOS for each command for an in-depth look at all relevant options and configurations.
Some task-scheduling daemons used in Linux/UNIX are:
Using at
The at command allows a user to execute commands or scripts at a specified time (required) and date (optional). The commands can be entered via standard input, redirection, or file.
darkstar:~% at
Interactive at
Using the command at with standard input (keyboard) is a little more complicated than typing one line in at the prompt. The command uses an internal “sub-shell” to gather the required information. Once the command information entry is complete, Ctrl+D (EOT) will signify entry completion. The -m flag specifies a mail message will be sent to the user when the job is finished, regardless if any output was created.
darkstar:~% at 12:01 -m warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at> ./my_script.sh at> <EOT> job 4 at 2015-06-22 12:01 darkstar:~%
Using cron
cron is a daemon that runs tasks in the background at specific times. For example, if you want to automate downloads of patches on a specific day (Monday), date (2 July), or time (1300), cron will allow you to set this up in a variety of ways. The flexibility inherent in cron can allow administrators and power users to automate repetitive tasks, such as creating backups and system maintenance.
cron is usually configured using a crontab file. The following command will open your user account crontab file:
darkstar:~% crontab -e
To edit the system-level crontab, first log into the root account:
darkstar:~# crontab -e
If your system has sudo installed, type in:
darkstar:~% sudo crontab -e
The crontab file syntax is:
# * * * * * command to execute # │ │ │ │ │ # │ │ │ │ │ # │ │ │ │ └───── day of week (0 - 6) (Sun(0) /Mon (1)/Tue (2)/Wed (3)/Thu (4)/Fri (5)/Sat (6)) # │ │ │ └────────── month (1 - 12) # │ │ └─────────────── day of month (1 - 31) # │ └──────────────────── hour (0 - 23) # └───────────────────────── min (0 - 59)
Using an asterisk in any placeholder location, will match any value. For example, the following will run example_script.sh at noon (1200) everyday during the first three months of the year:
#For more information see the manual pages of crontab(5) and cron(8) # # min hr day month weekday command # # 0 11 * 1-3 * /home/user/example_script.sh
Using anacron
If you are experienced with those tools, please feel free to write the articles.