首页/系统/Linux 运维命令速查/systemctl list-timers 查看定时器
定时任务与计划50 条

systemctl list-timers 查看定时器

一眼看清所有 timer 的下次触发、上次触发与关联 unit;NEXT/LAST 为空说明未启用或已过期,排查定时器常用入口。

Linux 运维命令速查系统更新于 2026-10-13

查看定时器是什么

list-timers 把所有 systemd timer 汇总成一张表:下次触发时间(NEXT)、距离触发还有多久(LEFT)、上次触发时间(LAST)、距上次过去多久(PASSED),以及它拉起的单元(ACTIVATES)。核对「定时任务到底什么时候跑」时,它比逐个 systemctl status 快得多,也是排查「定时任务没跑」的第一入口。

基本信息

适用平台Linux(systemd)
命令语法systemctl list-timers [--all] [模式]
常用选项--all 包含未激活的 timer --no-pager 便于管道处理 模式参数按名称过滤
关键关系timer 负责触发,触发后启动同名的 .service;命令写在 service 里
权限说明普通用户可读

典型使用场景

  • 盘点机器上有哪些定时任务:避免「谁在凌晨跑任务」这类无人能回答的问题
  • 确认下次触发时间:变更窗口前先看 NEXT 是否与预期一致
  • 排查任务没跑:对比 LAST 与 PASSED,判断是没触发还是触发了但失败
  • 核对单元配对:确认 timer 对应的 service 名称正确、内容符合预期
  • 清理陈旧任务:用 --all 找出已停用但仍残留的 timer

常用示例

常用示例
systemctl list-timers --all --no-pager          # 含未激活的全部定时器
systemctl list-timers 'backup*'                 # 按名称过滤
systemctl list-timers --no-pager | head -n 20   # 概览
systemctl status backup.timer --no-pager        # 单个 timer 的详细状态
systemctl cat backup.timer                      # 看它的 OnCalendar 定义
systemctl list-timers --all | grep -c timer     # 统计数量

看它到底拉起什么

看它到底拉起什么
systemctl cat backup.timer          # 确认 Unit= 或同名 service
systemctl cat backup.service         # 真正的执行命令在这里
journalctl -u backup.service --since today --no-pager | tail -n 30

输出列读法

列含义怎么看
NEXT下次触发时间相对时间显示;--no-pager 后仍是相对值
LEFT距下次触发还有多久用于确认变更窗口是否够用
LAST上次触发时间长期不变说明没被触发过
PASSED距上次触发多久配合 OnCalendar 判断是否漏跑
UNITtimer 单元名确认是否 enabled 与加载
ACTIVATES被拉起的 unit通常是与 timer 同名的 .service
LAST 列过旧而 NEXT 在未来:说明上次执行可能失败或被中断,配合 journalctl -u 对应 unit 一起看;如果 LAST 一直是 n/a,说明这个 timer 从未触发过,通常是没 enable 或 OnCalendar 写错。
timer 与 service 是配对关系,理解这点就不会找错地方:触发条件写在 .timer(OnCalendar、OnBootSec 等),真正执行的命令写在 .service 的 ExecStart。改完 .timer 或 .service 都要 daemon-reload,改 .timer 还要 restart 该 timer 才会重新排期。
写完 OnCalendar 先做静态验证:systemd-analyze calendar 'Mon..Fri *-*-* 03:00:00' 会打印规范化后的表达式、下次与再下次触发时间,比反复 restart timer 再看 NEXT 快得多,也能提前发现星期与月份字段写反这类错误。
用相对条件触发的定时器(OnBootSec、OnUnitActiveSec、OnUnitInactiveSec)要另眼看待:它们的下次触发时间会随系统启动时刻与上一次执行时间浮动,核对时不能用固定钟点去比对,只能确认间隔与顺序是否符合设计。

易错点

  • 列出 timer 不等于它会执行:timer 必须 enabled 且对应的 service 单元存在、名字匹配
  • 手动触发的 timer 会显示 NEXT 为 n/a,属预期行为而不是故障
  • OnCalendar 写错时 systemd 会拒绝加载单元,list-timers 里看不到它,要用 systemctl status 与 journalctl 找报错
  • Persistent=true 的 timer 会在开机后补跑错过的触发,看到「开机后立刻跑了一次」属正常设计
  • 改完 timer 不 restart 仍按旧排期执行,daemon-reload 只重新读取定义

数据来源与参考

  • man 1 systemctl(list-timers)
  • systemd 官方文档:timers

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌