Вопросы
Как проверить, что означает выражение cron?
Вставьте его в объяснитель cron; он выведет расписание словами и десять следующих времён запуска в вашем часовом поясе.
Порядок полей, расписания, которые реально нужны, и три подводных камня, на которые приходится большинство тикетов «моя cron-задача не запускается».
┌─ минута (0–59) │ ┌─ час (0–23) │ │ ┌─ день месяца (1–31) │ │ │ ┌─ месяц (1–12, jan–dec) │ │ │ │ ┌─ день недели (0–7, sun–sat; 0 и 7 = воскресенье) * * * * * команда
| * | каждое значение |
| 5 | ровно 5 |
| 1-5 | диапазон |
| */15 | каждое 15-е |
| 1,15 | список |
| 8-18/2 | шаг внутри диапазона |
| @reboot | один раз при загрузке |
| @hourly | 0 * * * * |
| @daily / @midnight | 0 0 * * * |
| @weekly | 0 0 * * 0 |
| @monthly | 0 0 1 * * |
| @yearly / @annually | 0 0 1 1 * |
| * * * * * | каждую минуту |
| */5 * * * * | каждые 5 минут |
| */15 9-17 * * 1-5 | каждые 15 мин, в рабочие часы, по будням |
| 0 * * * * | ежечасно, в начале часа |
| 30 * * * * | ежечасно в :30 |
| 0 */6 * * * | каждые 6 часов (0, 6, 12, 18) |
| 0 0 * * * | ежедневно в полночь |
| 0 3 * * * | ежедневно в 03:00 |
| 30 6 * * 1-5 | по будням в 06:30 |
| 0 9,17 * * 1-5 | по будням в 09:00 и 17:00 |
| 0 0 * * 0 | по воскресеньям в полночь |
| 0 0 * * 6,0 | по выходным |
| 0 0 1 * * | первого числа месяца |
| 0 0 1,15 * * | 1-го и 15-го |
| 0 0 1 */3 * | ежеквартально (1 янв, апр, июл, окт) |
| 0 0 1 1 * | ежегодно |
| 0 0 * * 1#1 | первый понедельник (нестандартно; используйте 0 0 1-7 * 1) |
| 0 0 1-7 * 1 | первый понедельник — осторожно: срабатывает в дни 1–7 ИЛИ в любой понедельник; добавьте проверку [ $(date +\%u) = 1 ] |
| 0 0 28-31 * * [ $(date -d tomorrow +\%d) = 01 ] && cmd | последний день месяца |
| 0 2 * * * sleep $((RANDOM \% 1800)); cmd | 02:00 со случайной задержкой до 30 мин |
/usr/bin:/bin). Используйте абсолютные пути или задайте PATH=… в начале crontab.\% (date +\%F).CRON_TZ=Europe/Belgrade работает в cronie.MAILTO=.flock -n /tmp/job.lock cmd.| crontab -e | редактировать свой crontab |
| crontab -l | показать |
| crontab -r | удалить всё (без подтверждения!) |
| crontab -u www-data -l | crontab другого пользователя (root) |
| /etc/crontab, /etc/cron.d/* | системные crontab: после расписания есть поле пользователя |
| /etc/cron.{hourly,daily,weekly,monthly}/ | скрипты-вкладыши, на десктопах запускаются anacron |
| grep CRON /var/log/syslog; journalctl -u cron | посмотреть, что запускалось |
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin [email protected] SHELL=/bin/bash # m h dom mon dow command 30 6 * * 1-5 flock -n /run/backup.lock /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Результаты и сообщения этого инструмента выводятся на английском языке.
Вставьте его в объяснитель cron; он выведет расписание словами и десять следующих времён запуска в вашем часовом поясе.