Operations & reliability · 2026

Your crontab is silently failing. The 5 silent killers of VPS-based cron jobs.

Cron itself isn't broken. Cron observability on a $5 droplet is. The 5 specific patterns that drop scheduled jobs in production, plus the modern setup that gives you logs, retries, and alerts without SSHing anywhere.

Scheduled jobs with per-run logs and alerts.

Web service, background worker, scheduled jobs and Telegram alerts on every plan. Always-on free tier.

No credit card required 1 service free forever Workers + cron included Telegram alerts on every plan
Frequently asked

Quick answers

Why do my cron jobs fail silently on a VPS?

Cron itself works fine. The failures come from the operational layer: the wrong crontab file, an empty environment that can't find your interpreter or .env, output redirected to /dev/null, an unreliable host, or overlapping runs. None of these are cron's fault — they're observability gaps on a Linux box you maintain yourself.

How do I prevent cron jobs from overlapping?

Wrap the command in flock -n /tmp/job.lock. It exits immediately if another instance holds the lock instead of queuing. At the database level, pg_try_advisory_lock does the same inside Postgres. Either prevents overlap; always also instrument the script so you know when it skipped.

Where does cron output go and how do I see it?

By default cron emails the user, but there's usually no mail transport on a fresh VPS, so output is discarded. Redirect to a log file with >> /var/log/job.log 2>&1, or better, pipe to logger -t jobname so it ends up tagged in journald and is queryable with journalctl -t jobname.

What replaces cron on a modern PaaS?

A scheduled job primitive managed by the platform. Render and Railway call them Cron Jobs, Fly has scheduled Machines, HostingGuru exposes scheduled scripts as a first-class resource. The minimum a modern scheduler should give you: per-run logs in a UI, exit-code tracking, and a failure alert that pings a channel you actually check.