Guide
How to monitor cron jobs (so they never fail silently)
Cron jobs fail quietly. The server reboots, a deploy drops the schedule, an exception is swallowed, the network flakes — and because cron does not report success or failure anywhere, the first sign of trouble is usually a customer email. This guide covers the two ways to monitor cron jobs and what a reliable setup looks like.
Why cron jobs fail silently
Standard cron has no concept of monitoring. It runs a command; whether that command succeeds, errors, or never starts, cron says nothing. The common failure modes all share one trait — they are invisible by default:
- The host was down or restarting when the job was due, so it never ran.
- A deploy or config change removed or broke the schedule.
- The script threw an error that was logged to a file nobody reads.
- The job hung on a slow network call and silently timed out.
Two ways to monitor: outbound checks vs heartbeats
There are two complementary approaches, and robust monitoring usually uses both.
Outbound checks: a monitor calls your endpoint on a schedule and records the status code, response body, and timing. This is ideal when the “job” is an HTTP endpoint you want triggered and verified.
Heartbeats (missed-run detection): your existing job pings a unique URL when it finishes successfully. If that ping does not arrive within the expected window, the monitor alerts you. This is the only approach that catches a job that never ran at all.
What good cron monitoring looks like
- Missed-run detection — you are told when an expected run does not happen, not just when one errors.
- A log of every run with status, output, and duration you can scan in seconds.
- Alerting that reaches you where you already are (email, Slack).
- Retries, so one transient blip does not wake you at 3am.
- A short enough check interval to notice problems while they still matter.
Set it up in three steps
With Cronmint, monitoring an existing job is a one-line change — append a heartbeat ping to the end of the command so a successful run checks in:
# runs every hour; pings Cronmint only if backup.sh exits 0
0 * * * * /usr/local/bin/backup.sh && curl -fsS https://cronmint.com/ping/YOUR-TOKEN >/dev/nullMonitor your first cron job free
5 jobs free, no card. Set up your first monitor in about 30 seconds.
Start freeFrequently asked questions
How do I know if a cron job didn’t run?
Use heartbeat monitoring: your job pings a unique URL on success, and the monitor alerts you if that ping does not arrive within the expected interval. Plain error monitoring cannot detect a run that never happened.
What is a heartbeat monitor?
A heartbeat monitor watches for a periodic check-in (a “ping”). As long as pings arrive on schedule the job is healthy; a missing ping means a missed or failed run, and you get alerted.
What’s the free way to monitor cron jobs?
Cronmint’s free tier monitors up to 5 jobs with email alerts and no credit card. You add a single curl to your existing crontab line.
How often should the monitor check?
Match the check interval to how quickly a failure matters. Cronmint supports intervals down to 1 minute on Pro (5 minutes on free).
Keep reading