Crontab
basics
The commands you put into your crontab will be executed unless you start a line with "#". If the command has any output and you have set the variable MAILTO before that line, the output of the command will be sent to you.
You can have as many MAILTO lines as you wish, the last before your cronjob line will be used. So every cronjob can send mail to another mail address or - if MAILTO has been set to nothing (MAILTO=) - no mail will be sent at all.
When cron is being executed, often no PATH has been set. So you can often make it work with something like
33 16 3 * * . /etc/profile && php /root/scripts/myScript-0815.php
If you don't want or can suppress the output of a cronjob, but don't want the everyday messages, redirect the normal output to the logs.
55 5 * * * . /etc/profile && apt-get -q update | logger -t apt-get && apt-get -q -y upgrade | logger -t apt-get
The "-t apt-get" creates log entries with the given tag.
commands
- list the cron jobs of the current user
crontab -l
- edit/create cron jobs
crontab -e
If you do not get vim as editor for your cronjobs, you can set it with the environment variable "VISUAL". Find out what is the path to vim on your system:
which vim
Then put this into your ~/.bashrc:
export VISUAL=/usr/bin/vim
then reload/source the .bashrc with
. ~/.bashrc
Do not forget the "." in front.
schedules
The following will clear the Apache error log at one minute past midnight (00:01 of every day of the month, of every day of the week).
1 0 * * * echo -n "" > /www/apache/logs/error_log
The following will run the script /home/user/test.pl every 5 minutes.
*/5 * * * * /home/user/test.pl
SHELL=/bin/bash PATH=/sbin:/bin/:/usr/sbin/:/usr/bin MAILTO=root HOME=/
.---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat | | | | | * * * * * command to be executed
- for numerics:
- lists 2,4,7
- ranges 2-5
- combination of list and range 2-4,6,8-11
- if "day of month" and "day of week" are both not "*", then they both are used, they do not restrict each other anymore
- steps after an asterix: */2 every 2 whatever