Расшифровка cron-выражений
Переводим расписание cron на русский, показываем ближайшие запуски в часовом поясе сервера и называем ловушки: день месяца против дня недели, минуты со звёздочкой, числа, которых нет в феврале. Можно вставить crontab целиком.
Cron выполняет задачи по часам сервера, а не по вашим. Выберите пояс, в котором живёт сервер, и запуски покажутся в нём. Ничего не отправляется: всё считается в браузере.
Расписание
Что показывает инструмент
Пять полей cron превращаются во фразу: «каждые 15 минут с 09:00 до 18:59 по будням». Ниже — ближайшие запуски с датой, днём недели и сроком «через 3 дня», число запусков за год и список ловушек, если они есть.
Понимаются макросы @daily, @weekly
и другие, имена месяцев и дней недели, шесть полей с секундами
и знаки L, W, # из Quartz
и Spring. Если вставить crontab целиком, расшифруется каждая строка,
а переменные MAILTO, PATH
и CRON_TZ будут учтены.
Нюансы, из-за которых задачи идут не так
Cron прощает многое, и расписание запускается не тогда, когда задумано. Самые частые случаи мы называем прямо.
- День месяца и день недели заданы оба. Cron связывает их через «или»:
0 9 1-7 * 1— это не первый понедельник месяца, а числа с 1-го по 7-е и каждый понедельник впридачу. - Минуты со звёздочкой при заданном часе:
* 3 * * *— 60 запусков подряд с 03:00 до 03:59, а не один в три ночи. - Шаг, не делящий час нацело:
*/7в минутах даёт 0, 7, 14… 56, а потом снова 0 — промежуток в четыре минуты вместо семи. - 31-е число в феврале, апреле, июне, сентябре и ноябре не наступает, 30 февраля не наступает никогда, 29 февраля бывает раз в четыре года.
Часовой пояс сервера
Cron выполняет задачи по часам машины, на которой стоит, а не по часам того, кто смотрит. Выберите пояс сервера, и запуски покажутся в нём: все российские пояса, UTC и соседние страны.
В поясах с переводом часов расписание может попасть в час, которого в этот день нет, или в час, который есть дважды. Такие даты отмечаются отдельно: разные реализации cron ведут себя в них по-разному.
Проверка команд
Если в строке есть команда, проверяется и она. Знак %
в cron обрывает команду: date +%F так не сработает.
Без перенаправления вывода всё, что команда печатает, уходит письмом.
У cron короткий PATH, и команда без полного пути может
не найтись. sudo внутри crontab повиснет на запросе
пароля.
Оцените инструмент
Помогите нам стать лучше
Ваша оценка на Яндексе окажет нам поддержку!
Оставить оценку на ЯндексеРасскажите, чего не хватило.
Другие инструменты
JSON Formatter
Форматирование и починка JSON в браузере, с замечаниями о дублях и длинных числ…
Тестер регулярных выражений
Проверка regex с разбором по-русски и защитой от зависания
JWT Decoder — разбор токена
Разбор JWT с объяснением полей и проверкой подписи
Конвертер CSV в JSON
Таблица в JSON с честными типами и обратной сверкой
Конвертер JSON в CSV
JSON в таблицу для Excel, со сверкой и защитой от формул
Форматирование SQL-запросов
Читаемый вид запроса, сверка с исходником и разбор опасных мест
XML форматирование онлайн
Читаемый XML, ошибки по-русски с подсказкой, сверка с исходником
XML-валидатор онлайн
Разметка, схема XSD и правила карты сайта, YML, RSS — с путём до ошибки