Cron молчит одинаково и когда задача отработала, и когда её не запустили. Этот гайд — путь от строчки в crontab до алерта в Telegram, за один заход.
Мы не ходим на ваш сервер и не просим доступов. Наоборот: задача сама сообщает, что отработала — обычным HTTP-запросом на свой уникальный адрес. Такой сигнал называют heartbeat («пульс»).
Дальше считает сервис: если пинг не пришёл в срок, чек становится late, затем down, и уходит алерт. Отсюда важное следствие — узнаёте вы не только про упавшую задачу, но и про не запущенную: про сломанный cron, забитый диск, выключенную виртуалку.
В дашборде — Новый чек. Заполнить нужно немного:
Grace задаётся от 0 до 30 дней. Ориентир: примерно вдвое больше обычного времени выполнения задачи — тогда редкий медленный прогон не поднимет ложный алерт.
После сохранения чек показывает свой ping-URL. Допишите
вызов curl в вашу cron-строку —
после самой задачи и через &&,
чтобы сигнал уходил только при успешном завершении:
30 2 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 -o /dev/null https://ping.cronalive.com/<uuid>
Каждый флаг здесь по делу:
-f — не считать 4xx/5xx успехом (иначе curl вернёт 0 на любой ответ);-s -S — молчать в обычном режиме, но показать ошибку, если она была: cron иначе пришлёт вам письмо с прогресс-баром;-m 10 — жёсткий лимит на весь запрос. Без него зависший сокет держит cron-задачу неопределённо долго;--retry 3 — три повтора при сетевой ошибке, с нарастающей паузой;-o /dev/null — тело ответа не нужно.Подробнее про таймауты, фоновый запуск и поведение при недоступности сервиса — Надёжность пингов. Готовые сниппеты для bash, Python, Node, PHP, Laravel, systemd и GitHub Actions — на странице Сниппеты.
Не ждите ночи — дёрните строчку руками. Чек перейдёт из new в up, и на его странице появятся время последнего пинга, следующий дедлайн и запись в журнале.
curl -fsS -m 10 -o /dev/null https://ping.cronalive.com/<uuid>
Если пинг не отражается: проверьте, что в crontab абсолютный
путь к curl (у cron другой
PATH) и что символ
% в строке экранирован —
в crontab он означает перевод строки.
Чек без канала уведомлений бесполезен: он будет исправно краснеть в дашборде, куда вы не смотрите. В карточке чека видно, куда уйдут алерты; настраиваются каналы в разделе Интеграции.
Дедлайн пропущен — чек становится late, а по истечении grace — down. Смена статуса попадает в ленту событий с причиной:
Одновременно уходит алерт во все подходящие интеграции. Доставку видно в журнале: статус, число попыток и причина отказа, если канал не ответил.
Пока чек остаётся в down, приходят напоминания через настроенные интервалы. Первый же успешный пинг вернёт чек в up и отправит уведомление о восстановлении.