LinuxProNews Home Page About iEntry Article Archive News WebProWorld Forums Jayde iEntry Contact Advertise Downloads iEntry
Get high performance, security, and reliability with Oracle for less than Microsoft SQL Server.

Oracle Standard Edition One is designed for servers with up to two processors, and it’s easy to install—in 17 minutes, it’s up and running. It’s easy to learn—you can master it in two days with free self-study courses. And it’s easy to buy—prices start at just $149 per named user.

Click for a free Oracle DBA self-study course.
03.31.04

Automating Tasks In Linux Using Cron

By Vinu Thomas

Linux has a powerful task scheduler called Cron. Cron will allow you to run commands automatically at times specified by you. Cron is similar to the task scheduler you find in Windows. To keep track of the schedules and tasks it has to run, Cron requires a file called Crontab (CRON TABle). All the Cron schedules and tasks should be stored in this table. The Crontab files cannot be directly edited. You can add or delete entries in the crontab file using the crontab command.

What's Cron and Crontab ?

You must be wondering what the difference between cron and crontab or wether they are the same. Cron is a process or program which wakes up every minute and looks for jobs it has to execute at that moment. Crontab is the list of jobs and times at which they have to execute.
Crontab Format:

Each entry in Crontab has at least 6 fields separated by a single space.

Field 1 Minute      Range of Values : 0-59
Field 2 Hour     Range of Values : 0-23
Field 3 Day     Range of Values : 1-31
Field 4 Month     Range of Values : 1-12
Field 5 WeekDay  Range of Values : 0-6 (Sunday being 0)
Field 6 Command to Execute


Click for a free Oracle DBA self-study course.

Now let's see how to make a crontab entry. Let's say you want to run a script backup.sh every day at 6:00pm.The entry would look like this:

0 18 * * * /home/user/backup.sh

The asterisk (*) is used to indicate that every instance of the particular time period will be used (i.e. every hour, every weekday, etc.). I've used to full path to the script /home/user/backup.sh instead of just using backup.sh. This is because cron runs as root, you should fully qualify yourpath names to any scripts that will be run. Let's see some more examples :


* Let's schedule the script printinvoices.sh to run every sunday at 12:45pm.

45 12 * * 0 /home/account/printinvoices.sh

* How about clearaccount.sh every month beginning at 1:32am ?

21 1 1 * * /home/accont/clearaccount.sh

* Let's see how to schedule a task to run only on weekdays(monday to friday)

0 10 * * 1-5 /home/account/cleartemp.sh

Keep your Website up and running 24x7
with SiteScope systems monitoring solution - try it!

Adding and Editing Entries in Crontab

Now that you know how crontab entries are formated, it's time to put some of your entries into the crontab list. To do this, you can use the crontab command. By specifying the -e option, you'll be taken to the default text editor to add and edit your crontab list. [crontab -e] Another method of manipulating your crontab entries is to create and save a text file with your crontab entries. You can load your list into crontab by using the following command: [crontab mycrontablist] where mycrontablist is the file containing your entries.

Viewing Crontab: [crontab -l]

You can view your current crontab list by specifying the -l option. Issuing this command will print out a list of all your current jobs in the crontab list

Removing Crontab: [crontab -r]


The -r option removes your current crontab file. Issuing this command will empty the contents of the current user's crontab file

Output from cron

Usually the output of cron gets mailed to the owner of the process or the person or email id specified in the MAILTO variable. To set the MAILTO variable, you'll have to add the following command to the top of your crontab : MAILTO="your_email_address@domain.com"

If you have a command that is run frequently, and you don't want the output to be emailed each time, you can redirect the output to a log file cmd >> log.file, so your job would be something like this.

0 18 * * * /home/user/backup.sh>>log.file

If you don't want any output at all, you can redirect the output to a null file : cmd>>/dev/null

0 18 * * * /home/user/backup.sh>>/dev/null


About the Author:
Vinu Thomas is a consultant on Webdesign and Internet Technologies. His website is http://www.vinuthomas.com. You can discuss about this article or any PHP/MYSQL related issues in our Discussion Forums: http://www.Vinuthomas.com/forum2.html


Read this newsletter at: http://www.linuxpronews.com/2004/0331.html

Free Newsletters
Part of the iEntry Network
over 4 million subscribers
LinuxProNews
DevWebPro
DevWebNews


Send me relevant info on products and services.


 

 

From the Forum:
Windows OS vs. Red Hat OS or both
In looking at the pros and cons. Each door I open has about 100 to 1000 or more doors on the other side to open.

Red Hat OS ver.8 can be downloaded for free(would take many hours to download) or purchased for a reasonable cost w/all manuals. ...
Go Here

 

 

What is your Geek IQ? See how you rank against other techies with this free comprehensive 20 question IQ test.
Take test

 

-- LinuxProNews is an iEntry, Inc. publication --
iEntry, Inc. 880 Corporate Drive, Lexington, KY 40503
2004 iEntry, Inc.  All Rights Reserved  Privacy Policy  Legal

archives | advertising info | news headlines | free newsletters | comments/feedback | submit article

SecurityProNews.com NetworkNewz.com