Демон cron примеры

  • Конфигурационный файл /etc/crontab. Директория для конфиг. файлов /var/spool/cron/
  • Демон crond вызывает Что такое команда run-parts для запуска сценариев из каталогов /etc/cron.*.
Если для run-parts не задана ни опция –lsbsysinit ни опция –regex, то имена должны состоять полностью из букв в верхнем и нижнем регистре, цифр, знаков подчёркивания и дефисов. Точку run-parts НЕ понимает.

Демон 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 также допускает вместо первых пяти позиций, означающих время выполнения задания, использовать предопределенные значения:

  • @reboot (выполнять при загрузке операционной системы)
  • @yearly (выполнять ежегодно в полночь 1-го января)
  • @monthly (выполнять ежемесячно в полночь 1-го числа)
  • @weekly (выполнять в полночь каждый понедельник)
  • @daily (выполнять ежедневно в 0:00)
  • @hourly (выполнять в начале каждого часа)
  • @reboot запускает задание cron при каждой загрузке системы.

Посмотреть файл 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 %
  • Формат cron для CentOS при использовании crontab -e, нужно обязательно указывать полный путь к интерпретатору, в моем случае /usr/bin/bash. Иначе скрипт выполняться НЕ будет! Запускать каждые 2 часа.
    0 */2 * * * /usr/bin/bash /scripts/backup_task43.sh
  • Запускать программу каждый два дня в 10:00 и высылать отчет на EMail указанный в переменной MAILTO
    MAILTO=noc@example.net
    0 10 */2 * * root /usr/local/repl/restart_repl.sh
  • Запускать скрипт 1-го и 15-го числа каждого месяца в 2:05, а также по воскресеньям (Day и WDay работают в режиме "ИЛИ")
    5  2  1,15 * Sun /home/script
  • Запускать скрипт первого числа каждого месяца в 4:10 утра
    10 4 1 * * /root/scripts/backup.sh
  • Запускать каждую минуту
    */1 * * * *  root /usr/bin/letsencrypt renew
  • Запускать каждые 2 часа
    0 */2 * * *  root /usr/bin/letsencrypt renew
  • Запускать несколько раз в день (6:00, 12:00, 18:00):
    # Минута   Час        День       Месяц      День недели
    0       6,12,18       *            *          * /usr/bin/bash /scripts/backup_task43.sh
  • Как выполнять задание каждую пятницу в час ночи
    0 1 * * 5 /root/scripts/example.sh
  • Выполняем задание по будним дням в 8:00 утра
    0 8 * * 1-5 /root/scripts/example.sh

Читайте также: Что такое команда run-parts, Что означает "> /dev/null 2>&1" или перенаправление STDIN, STDOUT и STDERR?, Утилита flock: Контроль за Одновременным Запуском Процессов и Скриптов.

📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!