Различия

Показаны различия между двумя версиями страницы.


Предыдущая версия
cron [2025/03/14 18:42] (текущий) – [Примеры запуска при помощи cron] darkfire
Строка 1: Строка 1:
 +====== Демон cron примеры ======
  
 +~~Title: Использование планировщика cron в Linux ~~
 +{{htmlmetatags>
 +metatag-description=(Cron используется для планирования задач Linux, FreeBSD, которые будут выполняться периодически.)
 +}}
 +
 +  * Конфигурационный файл /etc/crontab. Директория для конфиг. файлов /var/spool/cron/
 +  * Демон crond вызывает [[run-parts]] для запуска сценариев из каталогов /etc/cron.*.
 +
 +<note important>Если для run-parts не задана ни опция --lsbsysinit ни опция --regex, то имена должны состоять полностью из букв в верхнем и нижнем регистре, цифр, знаков подчёркивания и дефисов. Точку run-parts НЕ понимает.</note>
 +
 +Демон cron при  каждой  активизации  проверяет  дату изменения файла /etc/crontab  и директории /var/spool/cron/. Если они изменились, то он перечитывает  все  изменения  и  учитывает их при последующих вызовах. Поскольку  утилита  crontab  после редактирования файла заданий меняет дату  изменения  для  папки  /var/spool/cron/,  то  после  того,  как  в пользовательский  файл расписаний будут внесены изменения, нет нужды в перезапуске  процесса  cron - эти изменения будут учтены при следующей активизации. Именно по этой причине для редактирования пользовательских файлов расписаний  следует  использовать команду crontab -e,  а  не  редактировать  файлы непосредственно.  Для файла /etc/crontab  дата  изменения  проверяется отдельно, поэтому его можно изменять обычным редактором (для этого нужны права root).
 +
 +{{ ::cron.png |}}
 +
 +Выводимая выполняемыми командами информация по умолчанию пересылается на почтовый ящик владельца файла расписаний(обычно это 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.
 +<code>
 +# crontab -u www-data -e # редактировать содержимое файла crontab
 +# crontab -u www-data -l # отобразить содержимое файла crontab
 +</code>
 +<file>
 +# 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
 +</file>
 +<note tip>Если указаны  все звездочки - значит запускать каждую минуту.</note>
 +===== Как посмотреть настройки cron для всех пользователей =====
 +Иногда, ты не знаешь, а еще хуже не догадываешься от какого пользователя у тебя работают cron правила. Ниже команда, которая перебирает всех пользователей и выводит настройки cron:
 +<file bash>
 +cat /etc/passwd | cut -d : -f1 | xargs -I % crontab -l -u %
 +</file>
 +===== Примеры запуска при помощи cron =====
 +  * Формат cron для CentOS при использовании crontab -e, нужно обязательно указывать полный путь к интерпретатору, в моем случае /usr/bin/bash. Иначе скрипт выполняться НЕ будет! Запускать каждые 2 часа.<file>
 +0 */2 * * * /usr/bin/bash /scripts/backup_task43.sh
 +</file>
 +  * Запускать программу каждый два дня в 10:00 и высылать отчет на EMail указанный в переменной MAILTO<file>
 +MAILTO=noc@example.net
 +0 10 */2 * * root /usr/local/repl/restart_repl.sh
 +</file>
 +  * Запускать скрипт 1-го и 15-го числа каждого месяца в 2:05, а также по воскресеньям (Day и WDay работают в режиме "ИЛИ")<file>
 +5  2  1,15 * Sun /home/script
 +</file>
 +  * Запускать скрипт первого числа каждого месяца в 4:10 утра<file>
 +10 4 1 * * /root/scripts/backup.sh
 +</file>
 +  * Запускать каждую минуту<file bash>
 +*/1 * * * *  root /usr/bin/letsencrypt renew
 +</file>
 +  * Запускать каждые 2 часа<file bash>
 +0 */2 * * *  root /usr/bin/letsencrypt renew
 +</file>
 +  * Запускать несколько раз в день (6:00, 12:00, 18:00): <file bash>
 +# Минута   Час        День       Месяц      День недели
 +0       6,12,18                  *          * /usr/bin/bash /scripts/backup_task43.sh
 +</file>
 +  * Как выполнять задание каждую пятницу в час ночи <file bash>
 +0 1 * * 5 /root/scripts/example.sh
 +</file>
 +  * Выполняем задание по будним дням в 8:00 утра <file bash>
 +0 8 * * 1-5 /root/scripts/example.sh
 +</file>
 +  * Время запуска рекомендованное для ежедневных бэкапов
 +<file bash>
 +# Запуск каждый день в 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
 +
 +</file>
 +Читайте также: [[run-parts]], [[Что означает "> /dev/null 2>&1" или перенаправление STDIN, STDOUT и STDERR?]], [[flock]].

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

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

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