Run multiple accounts without risk of bans. Make money from affiliate marketing, SEO, and crypto with Vision. Find Out

Генератор выражений cron: crontab, Quartz и Spring

5 (оценок: 1)

Напишите выражение cron или соберите его кнопками ниже: поля, описание словами и ближайшие запуски меняются вместе. Всё происходит в вашем браузере: ничего никуда не отправляется.

Сделать строку crontab

Добавьте команду и получите всю строку, которую можно вставить в crontab -e, /etc/crontab или в панель вроде FastPanel.

Записывается комментарием в конце строки. FastPanel показывает его как название задания. Другие системы его игнорируют.

Ваша строка crontab, готовая к копированию

Выражение и выбор хранятся в этом браузере. Команда, URL и название не сохраняются, потому что могут содержать секретный ключ.

Ближайшие запуски

Cron использует часовой пояс сервера. Большинство серверов работает в UTC, поэтому проверьте часовой пояс своего (его показывает команда date).

    Другие форматы

    Quartz (Java) и Spring используют шесть полей с секундами спереди. Quartz также требует ? в одном из двух полей дней и нумерует дни недели с 1 (воскресенье).

    Примеры выражений cron

    Нажмите на выражение, чтобы поместить его в конструктор.

    Every few minutes

    Every minute
    Every 2 minutes
    Every 5 minutes
    Every 10 minutes
    Every 15 minutes
    Every 30 minutes

    Every few hours

    Every hour, at minute 0
    Every hour, at minute 30
    Every 2 hours
    Every 6 hours
    Every 12 hours

    Every day

    Every day at midnight
    Every day at 3:00, a quiet time for backups
    Every day at 6:00
    Every day at noon
    Every day at 23:30
    Twice a day, at 8:00 and 18:00

    Working days and weekends

    Monday to Friday at 9:00
    Every 15 minutes in working hours, Monday to Friday
    Every Friday at 18:00
    Saturday and Sunday at 10:00
    Every Monday at midnight
    Every Sunday at midnight

    Every month and every year

    The first day of every month
    The 15th day of every month
    The 1st and the 15th day of every month
    Every 3 months, on the first day
    Every 6 months, on the first day
    Once a year, on the 1st of January

    Shortcuts

    Once, when the system starts
    The same as 0 * * * *
    The same as 0 0 * * *
    The same as 0 0 * * 0
    The same as 0 0 1 * *
    The same as 0 0 1 1 *

    Генератор выражений cron: crontab, Quartz и Spring

    Cron запускает команды по расписанию в Linux и других системах Unix, а расписание записывается выражением cron: пятью полями, которые задают минуту, час, день, месяц и день недели. Эта страница собирает такое выражение, пересказывает его простыми словами, показывает ближайшие моменты запуска и превращает его в шестипольную форму Quartz и Spring. Она также может записать всю строку crontab с вашей командой. Всё происходит в вашем браузере.

    Как пользоваться

    1. Введите выражение в верхнем поле или соберите его: у каждого поля есть кнопки «Каждый», «Каждые N», «Значения» и «Диапазон». Выражение, описание и ближайшие запуски меняются сразу.
    2. Прочитайте предложение под выражением. Если там сказано то, что вы хотели, расписание верно. Если выражение неверно, красное сообщение скажет, какое поле и почему.
    3. Выберите часовой пояс сервера и посмотрите ближайшие десять запусков.
    4. Добавьте команду в разделе «Сделать строку crontab» и скопируйте строку в crontab -e.

    Пять полей выражения crontab

    ПолеЗначенияПримечания
    Минута0-59
    Час0-2324-часовые часы
    День месяца1-31
    Месяц1-12 или jan-dec
    День недели0-7 или sun-sat0 и 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: время в дату и обратно

    Конвертер Unix timestamp онлайн: время в дату и дату в timestamp, секунды или миллисекунды, любой часовой пояс, текущее значение и примеры кода.

    10
    JSON: форматирование и валидатор

    Форматируйте, минифицируйте и проверяйте JSON онлайн. Откройте файл, найдите строку и столбец ошибки, скачайте результат. Всё в браузере.

    19
    Генератор и проверка паролей: как в Chrome или для телефона

    Генератор паролей в браузере: случайный, как в Chrome или удобный для телефона, и проверка пароля. Ничего не отправляется на сервер.

    29
    Разбор URL онлайн: ссылка на составные части

    Бесплатный разбор URL: хост, протокол, путь, порт, параметры запроса и фрагмент за секунду. Полезно вебмастерам и SEO-специалистам. Работает в браузере.

    16

    Популярные инструменты