Генератор выражений cron: crontab, Quartz и Spring
Напишите выражение cron или соберите его кнопками ниже: поля, описание словами и ближайшие запуски меняются вместе. Всё происходит в вашем браузере: ничего никуда не отправляется.
Сделать строку crontab
Добавьте команду и получите всю строку, которую можно вставить в crontab -e, /etc/crontab или в панель вроде FastPanel.
Ваша строка crontab, готовая к копированию
Выражение и выбор хранятся в этом браузере. Команда, URL и название не сохраняются, потому что могут содержать секретный ключ.
Ближайшие запуски
Cron использует часовой пояс сервера. Большинство серверов работает в UTC, поэтому проверьте часовой пояс своего (его показывает команда date).
Другие форматы
Quartz (Java) и Spring используют шесть полей с секундами спереди. Quartz также требует ? в одном из двух полей дней и нумерует дни недели с 1 (воскресенье).
Примеры выражений cron
Нажмите на выражение, чтобы поместить его в конструктор.
Every few minutes
Every few hours
Every day
Working days and weekends
Every month and every year
Shortcuts
Генератор выражений cron: crontab, Quartz и Spring
Cron запускает команды по расписанию в Linux и других системах Unix, а расписание записывается выражением cron: пятью полями, которые задают минуту, час, день, месяц и день недели. Эта страница собирает такое выражение, пересказывает его простыми словами, показывает ближайшие моменты запуска и превращает его в шестипольную форму Quartz и Spring. Она также может записать всю строку crontab с вашей командой. Всё происходит в вашем браузере.
Как пользоваться
- Введите выражение в верхнем поле или соберите его: у каждого поля есть кнопки «Каждый», «Каждые N», «Значения» и «Диапазон». Выражение, описание и ближайшие запуски меняются сразу.
- Прочитайте предложение под выражением. Если там сказано то, что вы хотели, расписание верно. Если выражение неверно, красное сообщение скажет, какое поле и почему.
- Выберите часовой пояс сервера и посмотрите ближайшие десять запусков.
- Добавьте команду в разделе «Сделать строку crontab» и скопируйте строку в
crontab -e.
Пять полей выражения crontab
| Поле | Значения | Примечания |
|---|---|---|
| Минута | 0-59 | |
| Час | 0-23 | 24-часовые часы |
| День месяца | 1-31 | |
| Месяц | 1-12 или jan-dec | |
| День недели | 0-7 или sun-sat | 0 и 7 — оба воскресенье |
В выражении crontab ровно пять полей. Строка с шестью или семью полями — не crontab Linux, а Quartz или Spring, см. ниже.
Специальные символы
*— любое значение:* * * * *запускается каждую минуту.,— список:0 8,12,18 * * *запускается в 8:00, 12:00 и 18:00.-— диапазон:0 9-17 * * *запускается каждый час с 9:00 до 17:00./— шаг:*/15 * * * *запускается каждые 15 минут, а10-40/10 * * * *— на минутах 10, 20, 30 и 40.
Шаг отсчитывается от начала диапазона, а не от момента сохранения файла. */31 * * * * запускается на минутах 0 и 31 каждого часа, то есть дважды в час, а не каждые 31 минуту. Шаг, который не делит диапазон поровну, даёт более короткий промежуток в конце каждого цикла.
День месяца и день недели: срабатывает любое из условий
Когда ограничены оба поля дней (ни одно не содержит *), cron запускает команду, когда совпадает любое из них. Поэтому 30 4 1,15 * 5 запускается в 4:30 первого и пятнадцатого числа каждого месяца, а также в каждую пятницу. Это не значит «первого или пятнадцатого, если это пятница». Если нужно именно так, поставьте проверку в команду. Описание над конструктором говорит «cron запускает, когда совпадает любое», если видит такой случай.
Сокращения
Cron в Linux понимает также @reboot (один раз при запуске системы), @hourly, @daily (или @midnight), @weekly, @monthly и @yearly (или @annually). Они означают 0 * * * *, 0 0 * * *, 0 0 * * 0, 0 0 1 * * и 0 0 1 1 *.
Примеры cron
*/5 * * * *каждые 5 минут.0 3 * * *каждый день в 3:00, спокойное время для резервной копии.0 9 * * 1-5с понедельника по пятницу в 9:00.*/15 9-17 * * 1-5каждые 15 минут в рабочее время.0 0 1 * *в полночь в первый день каждого месяца.0 0 1 */3 *каждые три месяца, в первый день.0 0 1 1 *раз в год, 1 января.
Под конструктором больше тридцати примеров. Нажмите на любой, чтобы загрузить его.
Строка crontab и поле пользователя
В crontab пользователя (crontab -e) строка — это пять полей и команда. В системных файлах /etc/crontab и файлах в /etc/cron.d/ между временем и командой есть ещё одно поле — имя пользователя, от которого она запускается:
*/5 * * * * root /usr/local/bin/check.sh
Заполняйте поле «Пользователь» только для этих файлов. Строка с пользователем в crontab -e попытается выполнить имя пользователя как команду.
Как посмотреть и изменить задания cron в Linux
crontab -lпоказывает задания текущего пользователя, аcrontab -eоткрывает их в редакторе.sudo crontab -u username -lпоказывает задания другого пользователя.crontab -rудаляет сразу все задания пользователя и ничего не спрашивает. Используйте осторожно./etc/crontabи файлы в/etc/cron.d/— системные задания. В папках/etc/cron.hourly,cron.daily,cron.weeklyиcron.monthlyлежат скрипты, которые запускаются по этим расписаниям.systemctl list-timersпоказывает задания таймеров systemd — это отдельная от cron система.- Лог: в Debian, Ubuntu и Astra Linux ищите слово CRON в
/var/log/syslog(grep CRON /var/log/syslog); в системах на основе Red Hat смотрите/var/log/cron; в системе с journald используйтеjournalctl -u cronилиjournalctl -u crond.
Cron сам перечитывает файлы при их изменении, поэтому после crontab -e перезапускать его не нужно.
Cron в Astra Linux и ALT Linux
Выражение cron везде одно и то же. Отличается имя службы. Astra Linux построена на Debian, поэтому служба обычно называется cron: sudo systemctl status cron. В ALT Linux она обычно называется crond: sudo systemctl status crond. Если systemctl сообщает, что юнит не найден, попробуйте другое имя. Чтобы служба запускалась при каждой загрузке, используйте sudo systemctl enable --now cron (или crond).
Выражения cron Quartz и Spring (шесть или семь полей)
Программы на Java используют другой вид выражений cron. В Quartz шесть полей, первыми идут секунды, и необязательное седьмое поле для года: second minute hour day-of-month month day-of-week [year]. Отличия от crontab:
- Спереди секунды, поэтому «каждые 5 минут» записывается как
0 */5 * * * ?. - Одно из двух полей дней должно быть
?(без конкретного значения). Crontab этого знака не знает. - Дни недели нумеруются с 1, а воскресенье — 1 (с понедельника по пятницу —
2-6илиMON-FRI). В crontab воскресенье — 0 или 7. - В Quartz есть дополнительные знаки:
L(последний день),W(ближайший будний день) и#(N-й день недели:6#3— третья пятница).
Spring (@Scheduled(cron = "...")) тоже использует шесть полей, секунды первыми, но дни недели у него как в crontab: 0-7, где 0 или 7 — воскресенье, и имена (MON-FRI). Генератор показывает обе формы вашего выражения с выбранным вами полем секунд. Выражение crontab не может сказать в Quartz «в день 1 или в пятницу», потому что Quartz требует ? в одном из полей дней, и генератор предупреждает, когда так случается.
Название задания в FastPanel
FastPanel может принять целую строку cron сразу и читает текст после # в конце как название задания:
* * * * * wget --quiet -O /dev/null 'https://example.com/cron?key=secret' #Broadcasts cron job
Запишите название в поле «Название задания», и генератор добавит его в таком виде. Это возможность FastPanel, а не часть cron. В руководстве по cron (man 5 crontab) сказано, что комментарии на одной строке с командой недопустимы, потому что становятся частью команды. В Linux это всё равно работает, поскольку оболочка, выполняющая строку, воспринимает # как начало собственного комментария, и текст отбрасывается. Не рассчитывайте на это в других панелях без проверки. Одно замечание: % в названии оборвал бы строку, поэтому генератор его убирает.
Если вы ещё не выбрали панель управления, на главной странице linuxx.info есть таблица «Выберите идеальную панель управления для VPS-хостинга», которая поможет найти именно то, что нужно.
Частые ошибки
- Голый %. В команде crontab
%превращается в перевод строки, поэтомуdate +%Fломается. Пишитеdate +\%F. Опция в генераторе делает это за вас. - Короткий PATH. Cron запускается с небольшим PATH, поэтому команда, которая работает в вашем терминале, может не находиться. Используйте полные пути:
/usr/bin/php,/usr/bin/wget. - Неверный часовой пояс. Время указано в часовом поясе сервера, который часто UTC. Около перехода на летнее время задание в пропущенный час может не запуститься, а в повторяющийся — запуститься один или два раза, в зависимости от программы cron.
- Накладывающиеся запуски. Если задание выполняется дольше промежутка между запусками, копии накапливаются. Используйте
flock -n, как это делает опция в генераторе. - Письмо с выводом. Cron отправляет вывод задания его пользователю по почте. Перенаправьте его в файл или в
/dev/null, если письмо не нужно. - Неисполняемый скрипт (
chmod +x) или файл системного crontab без поля пользователя. - URL с & или ? без кавычек. Генератор ставит кавычки там, где они нужны.
Ограничения
- Генератор работает с crontab Vixie cron и cronie: пять полей, названия месяцев и дней и сокращения. Знаки
?,L,Wи#из Quartz в поле crontab не принимаются, и сообщение об этом говорит. - Ближайшие запуски считаются по часам вашего браузера и выбранному часовому поясу. Чтобы время совпадало, на сервере должен быть тот же часовой пояс.
- Разные программы cron по-разному обрабатывают час перевода времени. Список показывает обычный результат и пропускает время, которого не существует.
- Для таймера, не являющегося cron, в systemd есть параметр
OnCalendar. Он здесь не рассматривается. - Чтобы превратить Unix timestamp из лога в дату, воспользуйтесь конвертером Unix timestamp.
Похожие инструменты
Конвертер Unix timestamp онлайн: время в дату и дату в timestamp, секунды или миллисекунды, любой часовой пояс, текущее значение и примеры кода.
Форматируйте, минифицируйте и проверяйте JSON онлайн. Откройте файл, найдите строку и столбец ошибки, скачайте результат. Всё в браузере.
Генератор паролей в браузере: случайный, как в Chrome или удобный для телефона, и проверка пароля. Ничего не отправляется на сервер.
Бесплатный разбор URL: хост, протокол, путь, порт, параметры запроса и фрагмент за секунду. Полезно вебмастерам и SEO-специалистам. Работает в браузере.
Популярные инструменты
Узнайте, где размещён сайт: IP-адрес, хостинг-компания (ASN), страна и город сервера. Бесплатная проверка хостинга для любого домена.
Бесплатный IP Lookup: страна, город, координаты и часовой пояс IP-адреса, а также имя хоста через обратный DNS (reverse IP). IPv4 и IPv6.
DNS lookup онлайн: A, AAAA, CNAME, MX, NS, TXT, SOA и CAA записи любого домена и его SSL-сертификат. Узнайте, почему не срабатывает DNS lookup.
Проверьте из США (Нью-Йорк), доступен ли сайт: код ответа HTTP и время ответа в миллисекундах. Бесплатный пинг из США для любого URL.