How to list systemd timers

Listing systemd timers shows which scheduled jobs the service manager is waiting to trigger next. That quick inventory is useful when checking whether recurring maintenance, package refreshes, backups, or custom automation are actually queued to run on the host.

The systemctl list-timers view asks the running systemd manager for timer units currently loaded in memory and prints them in next-elapse order. The columns show the next scheduled run, how long remains until that run, when the timer last ran, how long ago that happened, the timer unit name, and the service unit it activates.

The default view does not equal every timer unit file installed on disk. Adding --all includes loaded timers that are not currently waiting for a future elapse, while systemctl list-unit-files –type=timer shows the broader installed inventory. Per-user timers live under systemctl --user instead of the system manager, and some timer properties can remain empty when a timer has not fired yet in the current manager instance.

Steps to list systemd timers using systemctl:

  1. Open a terminal session on the Linux host that runs systemd.

    Add sudo only when the host restricts timer or journal details; the listing commands themselves are read-only.

  2. List the timer units that the running manager currently has in memory.
    $ systemctl list-timers --no-pager
    NEXT                           LEFT LAST PASSED UNIT                         ACTIVATES
    Mon 2026-04-13 13:50:14 UTC   14min -         - systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
    Mon 2026-04-13 17:35:40 UTC 4h 0min -         - motd-news.timer              motd-news.service
    Tue 2026-04-14 00:00:00 UTC     10h -         - dpkg-db-backup.timer         dpkg-db-backup.service
    Tue 2026-04-14 04:40:20 UTC     15h -         - apt-daily.timer              apt-daily.service
    Tue 2026-04-14 06:51:54 UTC     17h -         - apt-daily-upgrade.timer      apt-daily-upgrade.service
    Sun 2026-04-19 03:10:23 UTC  5 days -         - e2scrub_all.timer            e2scrub_all.service
    
    6 timers listed.
    Pass --all to see loaded but inactive timers, too.

    The default view is already ordered by the next elapse time, so the timers closest to firing appear first.

  3. Add --all when the inventory must include timers that are loaded but not currently waiting for the next run.
    $ systemctl list-timers --all --no-pager
    NEXT                           LEFT LAST PASSED UNIT                         ACTIVATES
    Mon 2026-04-13 13:50:14 UTC   14min -         - systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
    Mon 2026-04-13 17:35:40 UTC 4h 0min -         - motd-news.timer              motd-news.service
    Tue 2026-04-14 00:00:00 UTC     10h -         - dpkg-db-backup.timer         dpkg-db-backup.service
    Tue 2026-04-14 04:40:20 UTC     15h -         - apt-daily.timer              apt-daily.service
    Tue 2026-04-14 06:51:54 UTC     17h -         - apt-daily-upgrade.timer      apt-daily-upgrade.service
    Sun 2026-04-19 03:10:23 UTC  5 days -         - e2scrub_all.timer            e2scrub_all.service
    -                                 - -         - fstrim.timer                 fstrim.service
    
    7 timers listed.

    A row with - in NEXT and LEFT is loaded but does not currently have a future elapse scheduled in this manager instance.

  4. Filter the timer list by exact unit name or glob pattern when the host has too many scheduled jobs to scan manually.
    $ systemctl list-timers 'apt-daily.timer' --all --no-pager --no-legend
    Tue 2026-04-14 04:40:20 UTC 15h - - apt-daily.timer apt-daily.service
    
    1 timer listed.

    Quote glob patterns such as 'apt-*' so the shell passes them to systemctl unchanged.

  5. Filter by timer state when the goal is only waiting timers or only loaded inactive timers.
    $ systemctl list-timers --all --state=active --no-pager --no-legend
    Mon 2026-04-13 13:50:14 UTC 14min - - systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
    Mon 2026-04-13 17:35:40 UTC 4h 0min - - motd-news.timer              motd-news.service
    Tue 2026-04-14 00:00:00 UTC 10h - - dpkg-db-backup.timer             dpkg-db-backup.service
    ##### snipped #####
    
    $ systemctl list-timers --all --state=inactive --no-pager --no-legend
    - - - - fstrim.timer fstrim.service

    On timer units, active generally means the timer is loaded and waiting, while inactive shows a loaded timer that is not currently scheduled to elapse.

  6. Inspect an individual timer when the list needs follow-up details such as the trigger unit or the next scheduled run.
    $ systemctl status --no-pager --full apt-daily.timer
    ● apt-daily.timer - Daily apt download activities
         Loaded: loaded (/usr/lib/systemd/system/apt-daily.timer; enabled; preset: enabled)
         Active: active (waiting) since Mon 2026-04-13 13:35:14 UTC; 17s ago
        Trigger: Tue 2026-04-14 04:40:20 UTC; 15h left
       Triggers: ● apt-daily.service
    
    Apr 13 13:35:14 server systemd[1]: Started apt-daily.timer - Daily apt download activities.

    The Trigger: line is the single-timer equivalent of the NEXT and LEFT columns from list-timers.

  7. Show a timer's normalized properties when the result needs to be parsed in a shell script or monitoring check.
    $ systemctl show -p NextElapseUSecRealtime -p LastTriggerUSec -p UnitFileState apt-daily.timer
    NextElapseUSecRealtime=Tue 2026-04-14 04:40:20 UTC
    LastTriggerUSec=
    UnitFileState=enabled

    An empty LastTriggerUSec= value means the timer has not fired yet in the current manager instance.

  8. List installed timer unit files when the broader on-disk inventory matters more than the currently loaded timer set.
    $ systemctl list-unit-files --type=timer --no-pager
    UNIT FILE                      STATE    PRESET
    apt-daily-upgrade.timer        enabled  enabled
    apt-daily.timer                enabled  enabled
    dpkg-db-backup.timer           enabled  enabled
    e2scrub_all.timer              enabled  enabled
    fstrim.timer                   enabled  enabled
    motd-news.timer                enabled  enabled
    systemd-sysupdate-reboot.timer disabled enabled
    systemd-sysupdate.timer        disabled enabled
    systemd-tmpfiles-clean.timer   static   -
    
    9 unit files listed.

    Use list-unit-files when a timer is installed but missing from list-timers, because only loaded timers appear in the runtime list.

  9. Switch to the user service manager when the scheduled job belongs to the logged-in account instead of the system instance.
    $ systemctl --user list-timers --all --no-pager

    User timers live in the per-user manager and can differ completely from the system-wide timer inventory.