Crontab Basics
by Marc Plotz
September 24, 2009
|
Why spend your time running repetitive scripts manually?
With Cron Tabs, you can set it and forget it. To learn more
read on.
|
Cron What?
Cron Tab (CRON TABle) is a very cool little thing that
allows you to execute scripts at certain times and dates
without actually having to be around to do the work. Think
of it as setting an alarm to go off at certain intervals,
and every time that alarm goes off a certain script is run
on your website, for instance. Now I have heard Cron Tab
being called many things, often incorrectly. In the circles
I travel in we usually refer to it as a Cron-Job. Anyone who
has watched a few episodes of Star-Trek will tell you that
Cronos is the Klingon Homeworld, although it is actually
spelled Q'onos. Another--perhaps less geeky crowd--would
tell you that there is a branch of Quantum Physics called
Quantum-ChronoDynamics, which deals with the micro-
relationships of time and space in quantum forms. These same
guys might tell you that the particle hypothesized to be the
very particle of time is called a Cronos. Any way you see
it, Cronos means time. The TAB part simply comes from table.
Hence by working with Cron Tabs we are simply writing Time
Tables? Yup! That's about it.
Now you may ask yourself why would we want something like
this to happen. Let's look at a real world example that I
came across myself. About a year ago I built quite a cool e-
commerce website for a certain customer who happened to be
an optometrist. His website was designed to actually sell
contact lenses online. Today it is a very well-run
successful business, even in these harsh economic times. One
of the reasons it is doing well, not the only reason, but
ONE OF THEM, is that the website actually knows when its
clients last purchase is complete, and it thus reminds them
a few days earlier to order their next batch already. How
this happens is that the website knows how many contact
lenses are in a box (the optometrist sets this amount in the
administration section of the site). So, every morning at
6AM sharp, a Cron Job runs which effectively executes a PHP
script on the website. The PHP script simply checks which
clients have not yet been reminded to refill their orders,
and out of those it works out how long they have had their
contact lenses and if they are due to re-order. If they are
due, an email is sent to the client reminding them to re-
order.
How this is good for business is that we know humans are
creatures of habit, and humans forget. In the busy lives we
live today very few of us would actually worry about how
many contact lenses we have left. Being reminded by the
website, which conveniently gives the client a link to click
in order to start the re-order process, makes it so simple
to do that re-orders are a major part of the business
now.
Now, Cron Tab is actually the little system that allows
you to edit cron tables without having to remember gut-
wrenching things like where all the cron files are stored.
Let's have a look how you can make Cron Tab work for
you.
Working With Cron Tab
Crontab has 3 options
- -l: lists the options for the current table file for your user-id
- -r: removes a table file
- -e: lets you edit a table file
Furthermore a single entry on a cron table consists of
just a single line telling what job to run, and when to run
that job.
There are six unique fields that can make up a single
line, and these fields must be separated by a space or a tab
(whitespace).
Lines that begin with hash (#) are comments.
The six required fields are:
- Minute of the hour to run (0-59)
- Hour of the day to run (0-24)
- Day of the month to run (0-31)
- Month of the year to run (1-12)
- Day of the weak to run (0-6) (where sunday = 0)
- Command to execute
So here you can see that the first five fields set the
time to run, and the final field is what the cron actually
must do.
It is important to note that an entry in the first five
columns can consist of:
- A number in the Range specified in brackets
- A range of numbers in the Range specified in brackets eg: 2-6
- A list--separated by comma's--containing individual numbers or a range of numbers in the list eg: 1-2, 5, 7-10, 14.
- An asterisk which represents all valid values eg: *
Something important to remember is that since fields are
separated by spaces, you must not include spaces or tabs in
your comma separated number lists.
Let's create a simple cron script.
$crontab -e
0-59 * * * * echo `date` "Hello World" >>$HOME/test.txt
$
The sixth field tells the date to be printed along with
Hello World in test.txt and the first field tell this to
happen every minute.
Setting the cron to run while watching the test.txt file
in your browser, you will see when the browser refreshes
every minute that an extra line has been appended to the end
of the file. That is simply your first "Hello World" with
Cron Tabs!
Until next time.
Marc Steven Plotz
About the Author
Marc Steven Plotz is a Senior Software
Developer for a major South African web development company
specializing in the development of enterprise-class web
applications and rapid application development frameworks.
He is also a technical writer for various developer websites
focusing on open source topics like PHP, CSS, HTML and
Javascript. He lives in Pretoria, South Africa, with his
wife and two children.
|