Task scheduler is quite necessary a tool in any operating system. We may need to schedule upgrades, or scripts to run at regular intervals so that our application will be functioning as expected. Linux comes with a default task scheduler called Cron.
Crontab
Cron, the default task scheduler in Linux, will help up to run tasks from once in a year to once in a minute. It is driven by a Crontab (Cron table) file, a configuration file that specifies commands to run periodically on a given schedule. The crontab files are stored where the lists of jobs and other instructions to the Cron daemon are kept. Users can have their own individual crontab files and often there is a system-wide crontab file (usually in /etc
or a subdirectory of /etc
) which only system administrators can edit.
Via Crontab, you can execute commands and run scripts in the background at regular intervals which ranges from every minute to a year.
View or edit existing Cron entry
To view or edit the existing Cron entry, you need shell access. So, login to the server as the user and execute this command.
crontab -l
This will open an editor where you can add a Cron.
crontab -e
The Cron entries will be of this format
* * * * * /execute/this/command
You can see there are 5 stars. The stars represent different date parts in the following order:
- minute (from 0 to 59)
- hour (from 0 to 23)
- day of month (from 1 to 31)
- month (from 1 to 12)
- day of week (from 0 to 6) (0=Sunday)
Examples of task scheduling
If you want to run script every minute
* * * * * /execute/this/command
If you want to execute it every 5 minutes
*/5 * * * * /execute/this/command
If you want to execute Nth minute of every hour
N * * * * /execute/this/commandOnce in 2 hours
N */2 * * * /execute/this/command
Manipulating the output
Sometimes we may need the output of the Cron to do further processing.
1. Store it some where
The following Cron saves the output to a log file
* */2 * * * /execute/this/command > /var/log/output.log
2. Mail it
By default, Cron saves the output in the user’s mailbox on the local system. But you can also configure Crontab to forward all output to a real email address by starting your crontab with the following line:
MAILTO="[email protected]"
Or you can pipe the output to an email ID
* */2 * * * /execute/this/command | mail -s " Cron Output" [email protected]
3. Trash it
* */2 * * * /execute/this/command > /dev/null
Just pipe all the output to the null device, also known as the black hole. On Unix-like operating systems, /dev/null
is a special file that discards all data written to it.
Do you like this article? Was it helpful? Let us know; drop a line in the comments 🙂