Scheduling Tasks in Linux through Crontab :
Cron allows Linux users to schedule tasks that will execute commands or scripts automatically at a given date and time. It could be used to automatically create backups, system maintenance such as deleting temporary files, synchronize files, scheduling updates etc.

The cron service runs in the background and constantly checks the /etc/crontab file, and /etc/cron.*/ directories. It also checks the /var/spool/cron/ directory.

Crontab file consists of command per line and have six fields and each fields are separated by space. The beginning five fields represent time to run tasks and last field is for command.

Fields Description Values Details
MIN Minute field 0 to 59 This tell at what minute of the hour command will execute.
HOUR Hour Field 0 to 23 This tell at what hour command will execute.
DOM Day Of Month Field 1 to 31 This is Day of Month, that you want command to execute.
MONTH Month Field 1 to 12 This is the month a specified command will execute.
DOW Day Of Week Field 0 to 6 This is the Day of Week that you want a command to execute
COMMAND Command Field Command to be executed Command/Name of the script file to be executed

Linux Crontab Format :
Cronjobs are written in the below format:
* * * * * /usr/bin/script_file.sh
- - - - - -
| | | | | |
| | | | |  --> script/command to be executed
| | | |  ----> Day of week (0 - 6) (Sunday=0)
| | |  ------> Month (1 - 12)
| |  --------> Day of month (1 - 31)
|  ----------> Hour (0 - 23)
 ------------> Minute (0 - 59)

                            

1. To list all crontab :
To see what crontabs are currently running on your system, you can open a terminal and run:
crontab -l
                            
To view crontab entries of other user use below command.
crontab -u username -l
                            

2. To add/edit crontab :
To edit the list of cronjobs you can run:
crontab -e
                            

3. To remove crontab :
This will remove complete scheduled jobs without confirmation from crontab.
crontab -r
                            

Examples of Scheduling Cron jobs :


1. Schedule a cron to execute at 4AM daily :
So if we want to schedule the script to run at 4AM daily, we would need the following cronjob:
0 4 * * * /usr/bin/script.sh
                            

2. Schedule a cron to execute twice a day at 4AM and 4PM :
If you want to schedule the script to run at 4AM and 4PM daily then you can specify multiple time stamp by comma separated.
0 4,16 * * * /usr/bin/script.sh
                            

3. Schedule a cron to execute on every Sunday at 10 PM. :
This type of cron are useful for doing weekly tasks.
0 22 * * 0 /usr/bin/script.sh
                            

4. Schedule a cron to execute on every six hours. :
Below cron will execute at every six hours interval.
0 */6 * * * /usr/bin/script.sh
                            

5. Schedule a cron to execute on Monday,Wednesday and Friday of every month at 9AM :
If you want to schedule a task to be executed for selected days such as Monday,Wednesday and Friday of every month at 9AM then below cronjob can be used.
0 9 * * 1,3,5 /usr/bin/script.sh
                            

6. Schedule a multiple tasks in single cron. :
To schedule multiple tasks with single cron, it can be done by separating tasks by semicolon.
* * * * * /usr/bin/script1.sh; /usr/bin/script2.sh
                            

Store Cronjob Output to file :


To store the cron output in a file, use the closing bracket (>) after command/script. This will rewrite the output file every time:
* * * * * /usr/bin/script.sh > /var/log/cron.log
                            
If you would like to append the output at the end of the file instead of a complete rewrite, use double closing bracket (>>) instead:
* * * * * /usr/bin/script.sh >> /var/log/cron.log