Когда это нужно
Сайт может отвечать, пока ночной импорт, расчёт отчётов или очистка очереди уже несколько дней не выполняются. Проверка HTTP не показывает результат фоновой задачи. Tickwatch ждёт сигнал по её расписанию и отдельно учитывает начало, завершение и ошибку.
Как подключить
- 1
Создайте cron-монитор: перенесите расписание и часовой пояс планировщика, добавьте допустимое опоздание.
- 2
Сохраните обёртку ниже и замените в crontab вызов задачи на команду с обёрткой.
- 3
Подключите Telegram или email. Проверьте один успешный запуск, одну ошибку и один пропуск на тестовой задаче.
Готовый пример
Нужны Bash, curl и uuidgen на сервере задачи. Сохраните код как /opt/tickwatch-run.sh, замените URL пинга своим и укажите абсолютный путь к рабочему скрипту. Ключ пинга не публикуйте. Обёртка сохраняет код завершения задачи; ошибка отправки сигнала её не прерывает.
#!/usr/bin/env bash
# Save as tickwatch-run.sh; run: bash tickwatch-run.sh /path/to/job.sh
if [ "$#" -eq 0 ]; then echo "Usage: $0 command [args...]" >&2; exit 2; fi
PING='https://ping.tickwatch.dev/YOUR_PING_KEY'
RID=$(uuidgen) || exit 1
ping() {
curl -fsS --connect-timeout 3 --max-time 5 --retry 2 --retry-max-time 12 \
-X POST "$PING/$1?rid=$RID" >/dev/null 2>&1 || true
}
finish() {
code=$?
trap - EXIT
if [ "$code" -eq 0 ]; then ping ""; else ping fail; fi
exit "$code"
}
trap finish EXIT
trap 'exit 130' INT
trap 'exit 143' TERM
ping start
"$@"0 3 * * * /usr/bin/bash /opt/tickwatch-run.sh /usr/local/bin/job.shЧто проверить перед запуском
Ненулевой код завершения отправляет /fail. Отсутствие сигнала обнаруживается после дедлайна и запаса времени.
Для зависаний задайте максимальную длительность: один /start без завершения не должен оставаться незамеченным.
Проверьте PATH, права, рабочую папку и окружение именно пользователя cron. Ручной запуск из терминала не воспроизводит всё его окружение.
Частые вопросы
Нужен агент на сервере?
Для этого сценария достаточно исходящих HTTPS-запросов из curl. Входящий порт для Tickwatch открывать не нужно.
Что будет, если весь сервер выключится?
Сигнал перестанет поступать, и монитор заметит пропуск по расписанию. Это говорит об отсутствии отчёта, а не устанавливает причину выключения сервера.