Linux. Crontab
07 Sep 2017Ниже указан формат файла crontab:
------------- минуты (0 - 59)
| ----------- час (0 - 23)
| | --------- день месяца (1 - 31)
| | | ------- месяц (1 - 12)
| | | | ----- день недели (0 - 6) (Воскресенье=0)
| | | | |
* * * * * команда_для_запуска
Запятая (,) определяет список значений, например: 1,3,4,7,8
Тире (-) определяет диапазон значений, например: 1-6, что эквивалентно 1,2,3,4,5,6
Звездочка (*) определяет все допустимые значения поля. Например, звездочка в поле часы будет эквивалентно значению 'каждый час'..
Слэш (/) может использоваться для пропуска данного числа значений. Например, */3 в поле часы эквивалентно строке 0,3,6,9,12,15,18,21; * означает 'ежечасно', но /3 устанавливает использовать только первое, четвертое, седьмое...и так далее значение определенное *.
Просмотр crontab
crontab -l
Редактирование crontab
crontab -e
Задания cron запускаются для каждого пользователя, однако, если вы хотите запускать команды cron от имени пользователя root используйте:
sudo crontab -e
Если результатом выполнения команды из crontab являются какие-то выходные данные, то демон cron обычно высылает эти данные пользователю по email. Что бы отключить данную функцию для любой специфичной команды, вы можете перенаправить вывод на /dev/null. Для отключения пересылки сообщений по email из crontab добавьте в строку вызова команды
> /dev/null 2>&1
Это позволит перенаправить вывод на устройство /dev/null, однако, если возникнут ошибки, то вы их тоже не увидите.
Примеры заданий cron
для выполнения команды ls вызываемой ежедневно в 16:30, добавьте следующую строку в cron:
30 16 * * * ls
для выполнения команды ls вызываемой каждые 5 минут, добавьте следующую строку в cron:
*/5 * * * * ls
для выполнения команды ls вызываемой каждую пятницу в 6:57, добавьте следующую строку в cron:
57 6 * * 5 ls
для выполнения команды ls вызываемой один раз в месяц в 14:38, добавьте следующую строку в cron:
38 14 1 * * ls
для выполнения команды echo "string" вызываемой по будням в 12:00, добавьте следующую строку в cron:
0 12 * * 1-5 echo "lunchtime"
для выполнения команды echo "string" вызываемой каждый раз 31-го декабря в 00:00, добавьте следующую строку в cron:
0 0 31 12 * echo "С новым годом!"