Каждая строка файла настройки планировщика имеет следующий формат:
* * * * * {пользователь} выполняемая_команда
- - - - -
| | | | |
| | | | ----- 5. День недели (0 - 7) (Воскресенье =0 или =7)
| | | ------- 4. Месяц (1 - 12) (можно три буквы из названия месяца,
| | | регистр не имеет значения от jan до dec)
| | --------- 3. День (1 - 31)
| ----------- 2. Час (0 - 23)
------------- 1. Минута (0 - 59)
В примере показан формат одной из строки таблицы, состоящий из 7 полей. Первые 5 полей - это значения, задающие периодичность выполнения команды (расписание). 6-e поле присутствует только в таблицах /etc/crontab и др. расположенных в каталоге /etc/cron.d/. 7-е поле есть сама запускаемая команда.
Командой может быть как простая команда, например, ls /proc >> /tmp/proc, или команда запуска написанного вами специального сценария. Со всей оставшаяся частью строки до символа перевода строки или символа %, будет выполнен вызов /bin/sh или другой оболочки, определенной в переменной SHELL в crontab. Знак процента (`%' ) в команде (если он не экранирован обратной косой чертой (`\' ) ) будет соответствовать символу перевода строки и все данные после первого `%' будут посланы для команды на стандартный ввод.
Для указанных выше первых 5 полей, можно использовать звездочку (*), что означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами.
Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.
Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.
Косая черта (/) используется для определения шага значений. Если после диапазона указать /<целое_число>. Например, значение минут 0-59/2, определяет, что задание будет запущено каждую вторую минуту.
Вся оставшаяся часть строки до символа перевода строки или символа %, будет выполнен вызов /bin/sh или другой оболочки, определенной в переменной SHELL в crontab Знак процента (`%' ) в команде (если он не экранирован обратной косой чертой (`\' ) ) будет соответствовать символу перевода строки и все данные после первого `%' будут посланы для команды на стандартный ввод.
Пример crontab-файла:
# выполнить команды hello каждый понедельник в 3:30
30 3 * * mon hello
# выполнить команду hello в первый день каждого месяца в 4:10
10 4 1 * * hello
# выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily
5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1
# каждый рабочий день в 22:00
0 22 * * 1-5 echo "Пора домой" | mail -s "Уже 22:00" john
23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д."
5 4 * * sun echo "Выполняется в 4:05 в воскресенье"
0 0 1 1 * echo "С новым годом!"
15 10,13 * * 1,4 echo "Эта надпись выводится в понедельник и четверг в 10:15 и 13:15"
0-59 * * * * echo "Выполняется ежеминутно"
# каждые 5 минут
*/5 * * * * echo "Прошло пять минут"
Внимание! чтобы изменения, внесенные в файл конфигурации начали работать, демону крона надо дать команду перечитать конфигурацию. Делается это так:
service crond reload
или так:
service cron reload
- т. к. в разных Linux-системах принято разное название демона cron.