Managing a systemd timer with systemctl lets you see when a scheduled job will fire next, start the timer waiting immediately, stop future elapses, and decide whether it should return automatically after reboot.
On a systemd host, timer management has two layers: the runtime state such as active (waiting) or inactive (dead), and the unit-file state such as enabled or disabled. systemctl status shows the combined view for one timer, while systemctl list-timers --all shows the next and last run across the timers that the manager currently has loaded.
Examples below use cache-prune.timer as a stand-in unit name. Replace it with the real timer, add sudo for system timers, use systemctl --user for per-user timers, and run systemctl daemon-reload followed by systemctl restart after editing a timer file or drop-in because timer units report CanReload=no and do not support a live reload action.
Related: How to list systemd timers
Related: How to create a systemd timer
Related: How to manage a service using systemctl
Related: How to reload the systemd manager configuration
| Action | Example command |
|---|---|
| Show current status | systemctl status –no-pager –full unit.timer |
| List next and last runs | systemctl list-timers –all –no-pager |
| Start a stopped timer now | systemctl start unit.timer |
| Stop future elapses | systemctl stop unit.timer |
| Check live reload support | systemctl show -p CanReload unit.timer |
| Reread changed timer files | systemctl daemon-reload |
| Apply an edited schedule | systemctl restart unit.timer |
| Enable and start now | systemctl enable –now unit.timer |
| Disable and stop now | systemctl disable –now unit.timer |
$ systemctl status --no-pager --full cache-prune.timer
● cache-prune.timer - Cache Prune Schedule
Loaded: loaded (/etc/systemd/system/cache-prune.timer; disabled; preset: enabled)
Active: active (waiting) since Wed 2026-04-22 11:09:37 +08; 50s ago
Trigger: Wed 2026-04-22 11:11:00 +08; 32s left
Triggers: ● cache-prune.service
Apr 22 11:09:37 host systemd[1]: Started cache-prune.timer - Cache Prune Schedule.
Replace cache-prune.timer with the real unit name. The Loaded: line shows the unit path and boot-time state, Active: shows whether the timer is currently waiting, Trigger: shows the next elapse, and Triggers: shows the unit that the timer starts.
$ systemctl list-timers --all --no-pager NEXT LEFT LAST PASSED UNIT ACTIVATES Wed 2026-04-22 11:11:00 +08 32s Wed 2026-04-22 11:10:00 +08 27s ago cache-prune.timer cache-prune.service Wed 2026-04-22 11:12:41 +08 2min 13s - - update-notifier-download.timer update-notifier-download.service Wed 2026-04-22 11:20:00 +08 9min Wed 2026-04-22 11:10:00 +08 27s ago sysstat-collect.timer sysstat-collect.service ##### snipped #####
Only timers that the running manager currently has loaded appear in this table. A disabled timer that has not been started or enabled yet can still be missing here even though its unit file exists on disk. The NEXT time can also move within the timer's AccuracySec= window, which defaults to one minute unless the timer overrides it.
$ sudo systemctl start cache-prune.timer $ systemctl is-active cache-prune.timer active $ systemctl is-enabled cache-prune.timer disabled
start changes the runtime state only. The timer can be active now while still printing disabled until it is explicitly enabled for later boots.
$ sudo systemctl stop cache-prune.timer
$ systemctl status --no-pager --full cache-prune.timer
○ cache-prune.timer - Cache Prune Schedule
Loaded: loaded (/etc/systemd/system/cache-prune.timer; disabled; preset: enabled)
Active: inactive (dead)
Trigger: n/a
Triggers: ● cache-prune.service
Apr 22 11:09:37 host systemd[1]: Started cache-prune.timer - Cache Prune Schedule.
Apr 22 11:10:44 host systemd[1]: cache-prune.timer: Deactivated successfully.
Apr 22 11:10:44 host systemd[1]: Stopped cache-prune.timer - Cache Prune Schedule.
Stopping the timer prevents the next scheduled activation, but it does not stop a service instance that the timer already launched. Manage the triggered service separately if it is still running.
$ systemctl show -p CanReload cache-prune.timer CanReload=no
Timer units report CanReload=no, so a unit-file or drop-in edit needs systemctl daemon-reload and then a timer restart.
$ sudo systemctl daemon-reload
$ sudo systemctl restart cache-prune.timer
$ systemctl status --no-pager --full cache-prune.timer
● cache-prune.timer - Cache Prune Schedule
Loaded: loaded (/etc/systemd/system/cache-prune.timer; disabled; preset: enabled)
Active: active (waiting) since Wed 2026-04-22 11:11:07 +08; 5ms ago
Trigger: Wed 2026-04-22 11:12:00 +08; 52s left
Triggers: ● cache-prune.service
Apr 22 11:11:07 host systemd[1]: Started cache-prune.timer - Cache Prune Schedule.
sudo systemctl reload cache-prune.timer fails with Failed to reload cache-prune.timer: Job type reload is not applicable for unit cache-prune.timer. because timer units do not provide a reload action.
$ sudo systemctl enable --now cache-prune.timer Created symlink /etc/systemd/system/timers.target.wants/cache-prune.timer → /etc/systemd/system/cache-prune.timer. $ systemctl is-enabled cache-prune.timer enabled $ systemctl is-active cache-prune.timer active
enable creates the install link for future boots, and --now adds the immediate start in the same command.
$ sudo systemctl disable --now cache-prune.timer Removed "/etc/systemd/system/timers.target.wants/cache-prune.timer". $ systemctl is-enabled cache-prune.timer disabled $ systemctl is-active cache-prune.timer inactive
A timer with no [Install] section is static, so it can still be started manually or by a dependency but cannot be enabled or disabled directly.