While diving deeper into Linux internals and modern SRE practices, I came across a question that many Linux engineers eventually ask:
Is cron obsolete now that systemd timers exist? And where does daemontools fit into all of this?
The answer is: they solve related—but not identical—problems.
A quick comparison
Tool Primary Purpose
🕰️ cron Schedule commands or scripts at specific times
⏱️ systemd timer Schedule execution of systemd services
🔄 daemontools Supervise long-running services (daemons) and automatically restart them if they fail
One realization that helped me was thinking about the questions each tool answers:
- cron: “When should I run this script?”
- systemd timer: “When should I start this service?”
- daemontools: “How do I keep this service running continuously?”
Cron vs Systemd Timers
Both can schedule recurring work, but systemd timers bring several capabilities that are particularly valuable in production environments.
Cron Systemd Timer
Runs commands directly Triggers a systemd service
Simple scheduling Scheduling + service management
Limited logging Rich logs via journalctl
Misses jobs if the server is powered off Can catch up using Persistent=true
No dependency awareness Can wait for networking, databases, or other services
Limited security controls Supports sandboxing, resource limits, and privilege restrictions
Imagine scheduling a nightly database backup.
With cron, if the server is powered off at the scheduled time, the backup is simply missed.
With a systemd timer configured with:
Persistent=true
the missed backup is executed automatically after the system boots.
That small feature can make a big difference in production.
Where daemontools fits
Earlier in my career, I also had the opportunity to work with daemontools by DJ Bernstein.
It reminded me that before systemd became the standard on most Linux distributions, engineers often combined multiple tools:
- cron → scheduling
- daemontools → service supervision
- syslog → logging
Today, systemd integrates many of these capabilities into a single framework:
- Services
- Timers
- Logging (journald)
- Automatic restarts
- Dependency management
- Resource limits
- Security hardening
That doesn’t mean daemontools is obsolete—it still has value in legacy systems, lightweight environments, and certain embedded Linux deployments—but for modern Ubuntu, RHEL, and Debian servers, systemd has become the de facto standard.
My takeaway
As someone continuing to learn Linux, databases, Kubernetes, and SRE practices, one lesson stands out:
Understanding why these tools were created is just as important as learning how to use them.
Each represents a different stage in the evolution of Linux operations:
cron
│
â–Ľ
daemontools (service supervision)
│
â–Ľ
systemd
├── Services
├── Timers
├── Logging
├── Security
├── Resource Limits
└── Dependency Management
For my own work going forward:
- ✅ I’ll still use cron for quick, lightweight scheduled tasks.
- ✅ I’ll use systemd timers for production automation such as backups, maintenance jobs, and infrastructure operations.
- ✅ And I’ll continue to appreciate daemontools as an elegant piece of Linux history that influenced how reliable service supervision evolved.
Learning the evolution of technology often explains why modern tools look the way they do—and that’s one of the most rewarding parts of the journey.
What does your team primarily use today?
- Cron?
- Systemd Timers?
- Kubernetes CronJobs?
- Another scheduler or service supervisor?
I’d love to hear your experiences and what has worked well in your environments.
Top comments (0)