Main menu

Tutorial: Learn crontab in 10 min

Learn crontab in 10 min.

Crotab is just a scheduling system built for the nix OS’s.

Crontab is really simple, but some time it get’s tricky even for me. That’s a reason i am writing a quick example how to write a good crontab entry. Let’s have a look at syntax…

* * * * * CMD

All five star represent the respective entry of minute, hour, day of month, day of week and when time comes it will execute a respective command.

MIN HOUR DOM MON DOW CMD
Minute Hour Day of month Month Day of week Command
0-59 0-23 1-31 1-12 0-6
12am-11pm Jan-Dec sun-sat

Let’s create a crontab to execute at February 12, 6:15 AM

15 06 12 02 * /usr/bin/myScript.sh
  • 15 : 15 min
  • 06: 6 am
  • 12: 12th day of month
  • 02: February
  • *: Any Week

Note: Minute, Hour and Day of week count start from 0 so it always be less then 1 from count.
Note: * means every.

Learn crontab by examples..

Before starting let’s create a crontab entry and check if it’s working

Open your crontab file and start scheduling the tasks

# crontab -e

What if
* * * * * /usr/bin/myScript.sh
Every day, Every hour, Every minute means every minute

1. Execute every two minute

*/2 * * * * /usr/local/bin/check_network.sh

Note: it same as */5 by every 5 min.

2. Execute two times in a day

00 11,23 * * * /usr/local/bin/check_db.sh

Note: This will execute the cron on 12PM and 12AM.

3. Execute on weekends specific times.

00 3 * * 5,6 /usr/local/bin/check_backup.sh

Note: This will execute the cron on weekends 5,6, at 3AM.

4. Every month on specific day

00 03 02 */1 * /usr/local/bin/check_status.sh

Note: Every month’s second day at 3AM.

5. Predefined variables.

Keyword Cron
@yearly 0 0 1 1 *
@daily 0 0 * * *
@hourly 0 * * * *
@reboot Run at startup.
Example: @reboot               /usr/local/bin/check_disk.sh
Note: This will run on every reboot

Other stuff

Edit crontab entry : Crontab –e
View contab entry : Crontab –l
View crontab of other users : Crontab –u zolan -l
Send crontab emails : MAIL=youremailid@yourdomain.com
Set default shell: SHELL=/usr/bin/sh
Set path: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

Things to remember

  1. We can’t execute the cron on second basis, minute is the bare minimum unit we can use.
  2. Define PATH and shell in the top of crontab file if you are getting errors like “command not found”
  3. Always define time and ignore using *.
Example: * * * */1 * /usr/local/bin/command.sh

We created this to execute on every month but it will execute on every minute . So the proper way is

00 00 01 */1 * /usr/local/bin/command.sh

 

 

FacebookTwitterGoogle+RSS