Wednesday, August 11, 2010

Crontab configuration in Linux

Crontab is the default scheduling Application/program in most of the Linux/Nix boxes.
Crontab is define as scheduling of programs/scripts/applicaions with out administrator interventions
Crontab = (Cron)oligical+(tab)le nothing but time table for executing some scripts at that point of time

So where we requre crontab?
where there is no need for admin intervetions such as taking dialy backups sending mails to perticular users monitoring network.

So coming to scheduling task crontab uses clock daemon (/usr/sbin/cron or perhaps /usr/sbin/crond) that executes commands at specific times. and corn tables for each user is located in /var/spool/cron/ with their names
suppose you want to see cron table for root(cat /var/spool/cron/root)

Crontab file content

The content of the file can be devide in to 6 feilds(first 5 for specifing time and last one for executing scripts/app etc)
The first five fields are separated by either a space or a tab and represent the following units, respectively:

* minutes (0-59)
* hour (0-23)
* day of the month (1-31)
* month of the year (1-12)
* day of the week (0-6, 0=Sunday)

Configuration of crontab for user

Step1:Creating crontab for a user

#crontab -e -u username
-e is for specifing editing and -u for specifing username when you are scheduling crontabs for other users
if users want to schedule their own he can just give (crontab -e)

I will take one example here to explain crontab,suppose I want to execute one script located in /var/test/ and save the output to /temp/script.out should be executed every 10th of each month at 9:43pm

#crontab -e -u surya

so here it will open a temporary in /tmp folder

43 21 10 * * /var/test/ > /temp/script.out

here * in month field and week field indicates any month and any week execute this script

after entering the values save and exit the file, A file will be created in as /var/spool/cron/surya with the above content

Step2:seeing crontab for a perticular user

#crontab -l -u username


#crontab -l -u surya

If you are a user and want to see your crontab you can just give (crontab -l)

Step3:Removing crontab for perticular user

This can be acheived in two ways
1)removing all the crontab entries for a perticual user

#crontab -r -l username


#crontab -r -l surya

2)removing one task for perticual user,for doing this we have to edit the crontab

#crontab -e -l username

Please see here some of the crontab issues