Recommended Free Tools
I prefer systemd timers when a recurring job should be managed as a systemd service, or when its schedule depends on boot, service activity, or catching up after downtime. A timer is not automatically better than cron: for a few basic schedules, a crontab may be simpler and more portable. The right choice depends on the job’s timing semantics and the systems that need to run it.
What a systemd timer does
A systemd timer unit triggers a service unit. The timer defines when the trigger occurs; the service defines the work. That separation lets a scheduled task use systemd’s service configuration and management rather than placing the command directly in a crontab. The systemd project’s timer manual describes the unit’s scheduling behavior, while Oracle Linux’s timer guide documents the systemctl list-timers inspection command.
As an Amazon Associate I earn from qualifying purchases.
Choose the schedule model that matches the job
Calendar schedules: a particular time or date
OnCalendar= schedules events against realtime, wall-clock time. Use it for work intended to run at a calendar time, such as a nightly maintenance task. Calendar schedules depend on the system clock being correct; if realtime is wrong, a timer can activate at an unexpected time.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Monotonic schedules: relative to an event
Monotonic settings measure elapsed time relative to an event rather than a wall-clock date or time zone. Examples include OnBootSec=, OnStartupSec=, OnActiveSec=, OnUnitActiveSec=, and OnUnitInactiveSec=. They are useful when the requirement is “after boot” or “after this unit last ran,” rather than “at 02:00.” Calendar and monotonic expressions can be combined in one timer unit, according to the systemd manual.
#1 Best Overall
What happens when a scheduled run is missed
For a calendar timer, Persistent=true records the last time the timer triggered. When the timer is activated again, systemd can trigger the service if at least one scheduled event elapsed while the timer was inactive. This is a catch-up for a missed event, not a queue that replays every missed occurrence. If a machine was off through several calendar events, do not expect one service activation per missed event.
Sleep has its own behavior. The realtime clock continues while a machine is suspended, so an elapsed calendar event can be handled after resume; multiple calendar events during continuous sleep result in one service activation. Monotonic clocks generally pause during suspend. The systemd manual notes that WakeSystem= can select a clock that continues during suspend, but waking the hardware also depends on its support.
Timers allow a window; they do not promise real-time precision
The systemd manual’s current upstream main-branch documentation gives AccuracySec= a default of one minute. That is a timing window beginning at the configured expiration, not a promise that work starts at the exact scheduled instant. The manager places the expiration at a host-specific stable position within the window. Reducing the setting does not turn a timer into a hard real-time scheduler or eliminate system timer slack.
RandomizedDelaySec= serves a different purpose: it adds a random delay to spread timer events and reduce workload spikes. Consider whether the job can tolerate a window or added delay before choosing timers for work with strict timing requirements.
Calendar timers need a trustworthy clock
The systemd manual says calendar timer units are ordered after time-sync.target, and that systemd-time-wait-sync.service is ordered before that target. Its explanation is direct: “Timer units with at least one OnCalendar= expression are automatically ordered after time-sync.target, which systemd-time-wait-sync.service is ordered before.” That ordering does not, by itself, establish that every system has working time synchronization. Check your distribution’s time-sync setup, particularly on systems without a reliable battery-backed real-time clock.
systemd timers versus cron
| Question | systemd timer | cron |
|---|---|---|
| What runs? | Activates a service unit, so the job uses systemd service configuration and management. | A schedule and command can be kept in a crontab; a service-unit integration is not inherent in that entry. |
| What schedule fits? | Calendar events through OnCalendar= or monotonic timing relative to manager or unit events. |
Useful for basic recurring schedules; the sources here do not establish cron’s behavior for every implementation or missed-run case. |
| What if the host is unavailable? | For calendar timers, Persistent=true can trigger after reactivation if an event elapsed, but it does not replay every missed event. |
Do not assume missed-run catch-up from the cron label alone; behavior depends on the cron implementation and configuration. |
| Where does it fit? | A natural fit when the host uses systemd and the scheduled task benefits from systemd unit management. | Often easier for a small number of straightforward jobs and more portable across Unix-like systems. |
| How much configuration? | Typically uses a timer and a service unit, which is worthwhile when their management features matter. | A single crontab entry can involve less configuration for a simple command. |
The portability and simplicity comparison is a practical tradeoff, not a performance benchmark or universal rule. A Linux community discussion titled “Why I Prefer systemd Timers Over Cron” reflects that preference without establishing it for every user or system.
Rank #4
Inspect timers and check your installed documentation
Use systemctl list-timers to inspect timers, as described in the Oracle Linux guide. For directive details, consult the installed systemd.timer(5) and systemd.time(7) man pages. The upstream manual linked here follows the moving main branch rather than a release-pinned version, so your distribution’s systemd version and defaults may differ.
Quick Recap
Best Value
When I would choose each
- Choose a systemd timer when the job benefits from service-unit management, needs timing relative to boot or unit activity, or needs calendar-event catch-up after timer inactivity.
- Choose cron when the schedule is basic, a crontab is easier for your team to maintain, or the same schedule needs to move across varied Unix-like systems.
- Reconsider either option when the job requires hard real-time precision; systemd timers’ timing windows and delays do not promise that level of timing.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




