In various Linux/Unix, RHEL/centOS, Debian/Ubuntu machines corn is providing mechanism to schedule task with simple syntax and flexible way.
This is widely used through every range of users and very useful to schedule all sort of task through various mechanism,we can schedule one or multiple commands and any kind of scripts to automate work example like daily backup, log-rotations.
In this post we will see how we can use these cron to schedule these Linux/Unix task for various daily to daily operations.

CronTab Syntax

Crontab has specific syntax which we need use while we schedule our tasks inside it. It has total of Six fields, first five fields contain time sequence in which six field (mention command) will execute.

 # 
 # m h  dom mon dow   command

# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 

So in above mention print statement, we tried to describe, how crontab could apply on various times and cover almost various scenario.

We can describe all five fields in different ways

Minutes	Hour Day-of-Month  Month-of-Year  Day-of-week   Executable
|	|	|		|		|		
0-59	|	|		|		|		
       0-23	|		|		|		
	      1-31		|		|		
			       1-12		|		
					  0-7(0,7-Sunday)

How to List/Add/Edit Crontab

We can see add, edit and list new crontab schedules. Basically every user has crontab file in /var/spool/cron which could be displayed through through crontab command like below

Crontab -e   # add/Edit crontabs
 
crontab -u user-name -e  # Edit crontab of another user

With above commands we can Edit/Add cron entries for current users. We can also edit for another users as well, if you are authorised user for it

We can list various crontab entries through below commands.

crontab -l  # List cron entries

crontab -u user-name -l # List cron for specific users

By-default cron file at /var/spool/cron, file name is same as users name with user read,write permission only.

Cron Examples

Let’s see some examples how we can schedule cron to manage and automate operations task.

Cron Every minute

Mostly we need to run scripts or task during more longer update intervals, but if you need to run some scripts every minute, we can it though below way.

* * * * * /data/os_bin/server_misc.sh

Cron every few minutes

Sometime we need to run every after 5 or 15 minutes, SO we can use cron /interval expression for it.

*/5 * * * * /data/os_bin/server_load.sh

Every hour in specific minutes

Sometime we need to run some scripts every 5,18,47 minutes of every hour, how we could do that

5,18,47 * * * * /data/os_bin/disk_check.sh

Cron every specific minutes annd hours

Sometime we need to run some operation task only in specific hours and minutes.

0 7,18 * * * /data/os_bin/allow_denay_network

With above script we can allow users to connect internet through proxy only between office hours.

Cron in hours interval

Like in case we like to run some operation work every four hours.

* */4 * * * /data/scripts/backup.sh

Cron field variables

There are variable that could used through cron with various fields like below

At reboot Jobs – If we like to run something at every reboot, like whenever machine reboot schedule task would run automatically like system startup script.

@reboot /data/scripts/service_start.sh

Hourly Jobs – If we like to run any operation task on hourly basis like at first minute of every hour. If we like schedule it like 0 * * * *.

@hourly /data/scripts/rsync.sh

Daily Jobs – If we try to run something on first minute of every day (Midnight, 00:00), we can use “0 0 * * *”, which also called as @daily in cron like below.

@daily /data/scripts/MySQL_backup.sh
@daily /script/birthday_wishes.py

Weekly Jobs – If we need to execute something on first minute of week like “0 0 1 * mon”

@weekly /scripts/weekly_report.py

Monthly Jobs – If we need to run something on first minute of Month like “0 0 * 1 *”.

@monthly /script/payslip_mail.py

Yearly Jobs – sometime we need to fetch some yearly reports or new year wishes on first minute of year to all your employee account, like “0 0 1 1 *”

@yearly /scripts/new_year_wishes.sh