Crontab is one of the famouse services on a linux- and unix-system which hasn’t changed over decades. The configuration-layout is still the same as it was many years and more ago.
Crontab is a system service which starts shell-scripts or programs on a given date and/or time. Each user has his own crontab which can be modified by using the command
crontab -e. A typical crontab looks like the following:
* * * * * <scriptname>
The first column (first star) represents the minute. The second one the hour followed by day, month and weekday (where 0 means sunday) You can take the example from above if you want to execute your script or command each minute. The placeholder * stands for “every”.
A more realistic example will look like the following. In this case a program named
/usr/local/bin/test starts daily at 10 O `clock:
0 10 * * * /usr/local/bin/test
In order to define intervals, simply add a slash followed by the interval specified. The following entry starts the program every 5 minutes:
*/5 * * * * /usr/local/bin/test
Handling output- and error-messages
One must make sure that the script did not output generated because this is the current user by e-mail sent . Runs Amok a job so it can easily be suddenly thousands of messages in the mailbox waiting .
In order to prevent this , the output will be redirected directly in crontab:
0 10 * * * /usr/local/bin/test &> /dev/null
In that case the whole output will be redirected to
Using Scripts which are not stored in PATH
A simple user doesn’t have write-permissions to locations like /usr/bin, /bin and so on. Many user will save their scripts to
/usr/local/bin but that path isn’t known by the most linux-systems per default.
So you have to extend the PATH-variable with
/usr/local/bin. If you only call the script from within cron the best place for modifying PATH will be in the crontab itself. To do this simply add the following PATH-entry to your crontab (Check your current PATH-value and just add
/usr/local/bin to it, don’t you use my example if you’re not sure because some path may be missing and this will possibly break your crontab as program’s won’t be found anymore)
PATH=/usr/local/bin:/usr/bin:/bin 0 10 * * * /usr/local/bin/test &> /dev/null
This is the system-wide crontab. It is similar to the user crontab with the difference that the user, under which the script/program is executed, has to be specified.
PATH=/usr/local/bin:/usr/bin:/bin 0 10 * * * root /usr/local/bin/test &> /dev/null
In this case, our script will be started as the