Демон cron при каждой активизации проверяет дату изменения файла /etc/crontab и директории /var/spool/cron/. Если они изменились, то он перечитывает все изменения и учитывает их при последующих вызовах. Поскольку утилита crontab после редактирования файла заданий меняет дату изменения для папки /var/spool/cron/, то после того, как в пользовательский файл расписаний будут внесены изменения, нет нужды в перезапуске процесса cron - эти изменения будут учтены при следующей активизации. Именно по этой причине для редактирования пользовательских файлов расписаний следует использовать команду crontab -e, а не редактировать файлы непосредственно. Для файла /etc/crontab дата изменения проверяется отдельно, поэтому его можно изменять обычным редактором (для этого нужны права root).
Выводимая выполняемыми командами информация по умолчанию пересылается на почтовый ящик владельца файла расписаний(обычно это root и его EMail указывается в файле /etc/aliases). Если нужно отменить действие по умолчанию используют переменную MAILTO. Пустое значение (MAILTO="") будет перенаправлять сообщения в /dev/null.
Формат файла crontab также допускает вместо первых пяти позиций, означающих время выполнения задания, использовать предопределенные значения:
Посмотреть файл crona для пользователя www-data. Ключ -е позволит редактировать файл крона пользователя www-data.
# crontab -u www-data -e # редактировать содержимое файла crontab # crontab -u www-data -l # отобразить содержимое файла crontab
# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command to be executed
Иногда, ты не знаешь, а еще хуже не догадываешься от какого пользователя у тебя работают cron правила. Ниже команда, которая перебирает всех пользователей и выводит настройки cron:
cat /etc/passwd | cut -d : -f1 | xargs -I % crontab -l -u %
0 */2 * * * /usr/bin/bash /scripts/backup_task43.sh
MAILTO=noc@example.net 0 10 */2 * * root /usr/local/repl/restart_repl.sh
5 2 1,15 * Sun /home/script
10 4 1 * * /root/scripts/backup.sh
*/1 * * * * root /usr/bin/letsencrypt renew
0 */2 * * * root /usr/bin/letsencrypt renew
# Минута Час День Месяц День недели 0 6,12,18 * * * /usr/bin/bash /scripts/backup_task43.sh
0 1 * * 5 /root/scripts/example.sh
0 8 * * 1-5 /root/scripts/example.sh
Читайте также: Что такое команда run-parts, Что означает "> /dev/null 2>&1" или перенаправление STDIN, STDOUT и STDERR?, Утилита flock: Контроль за Одновременным Запуском Процессов и Скриптов.