Если для run-parts не задана ни опция –lsbsysinit ни опция –regex, то имена должны состоять полностью из букв в верхнем и нижнем регистре, цифр, знаков подчёркивания и дефисов. Точку run-parts НЕ понимает.
Демон cron при каждой активизации проверяет дату изменения файла /etc/crontab и директории /var/spool/cron/. Если они изменились, то он перечитывает все изменения и учитывает их при последующих вызовах. Поскольку утилита crontab после редактирования файла заданий меняет дату изменения для папки /var/spool/cron/, то после того, как в пользовательский файл расписаний будут внесены изменения, нет нужды в перезапуске процесса cron - эти изменения будут учтены при следующей активизации. Именно по этой причине для редактирования пользовательских файлов расписаний следует использовать команду crontab -e, а не редактировать файлы непосредственно. Для файла /etc/crontab дата изменения проверяется отдельно, поэтому его можно изменять обычным редактором (для этого нужны права root).
Создавать cron выражения вручную сложно — трудно держать в голове синтаксис минут, часов, дней недели и их комбинации. С cron калькулятором онлайн это просто: инструмент наглядно показывает расписание, помогает избежать ошибок и экономит время при настройке cron job на Linux.
Выводимая выполняемыми командами информация по умолчанию пересылается на почтовый ящик владельца файла расписаний(обычно это 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
# Запуск каждый день в 3:00 ночи (рекомендовано для ежедневных бэкапов) 0 3 * * * /bin/bash /root/backup_script_vps.sh >> /var/log/backup.log 2>&1 # Запуск через день в 3:00 ночи 0 3 */2 * * /bin/bash /root/backup_script_vps.sh >> /var/log/backup.log 2>&1 # Запуск раз в неделю по воскресеньям в 4:00 утра 0 4 * * 7 /bin/bash /root/backup_script_vps.sh >> /var/log/backup.log 2>&1 # Запуск 1-го числа каждого месяца в 5:00 утра 0 5 1 * * /bin/bash /root/backup_script_vps.sh >> /var/log/backup.log 2>&1
Читайте также: Что такое команда run-parts, Что означает "> /dev/null 2>&1" или перенаправление STDIN, STDOUT и STDERR?, Утилита flock: Контроль за Одновременным Запуском Процессов и Скриптов.