素材阁

systemd 定时器速查

共 23 条 systemd 定时器配置与管理命令,覆盖定时器单元结构、OnCalendar 写法、 相对与补跑、管理命令四组内容。支持搜索与分类筛选,点击即可复制。

定时器单元结构

一个 .timer 通常搭配一个同名 .service。

配置 / 命令说明
timer 与 service 的 [Unit] 段
[Timer] 段:触发时间与补跑
[Install] 段:enable 时挂到 timers.target
unit 名相同(后缀不同),timer 触发对应 service
在 [Timer] 里指定要触发的其它 service

OnCalendar 时间写法

格式:星期 年-月-日 时:分:秒。

配置 / 命令说明
每天 02:00 执行
工作日 09:00 执行
每 15 分钟一次
内置快捷别名
每周日 03:00
校验写法并查看下次触发时间

相对与补跑

相对触发与错过后补跑。

配置 / 命令说明
开机后 15 分钟触发一次
上次运行后 1 小时再次触发
systemd 启动后 5 分钟触发
错过的任务在下次启动时补跑一次
随机延迟 0-300 秒,避免多机同时跑

管理命令

启用、查看与手动触发。

配置 / 命令说明
新增 / 修改 unit 后必须重载
设为开机自启并立即生效
列出所有定时器及下次触发时间
查看定时器状态
手动触发一次对应服务
查看定时任务执行日志
查看 unit 的生效配置

使用说明

systemd 定时器速查:timer 单元结构、OnCalendar 写法、相对触发与补跑、管理命令;支持搜索与分类筛选,点击即可复制。

  1. 按用途点分类:定时器单元结构、OnCalendar 时间写法、相对与补跑、管理命令。
  2. 先在 /etc/systemd/system/ 写 myjob.service 与 myjob.timer,再 daemon-reload。
  3. 用 systemd-analyze calendar 校验时间写法并查看下次触发。
  4. enable --now 启动定时器,用 list-timers 与 journalctl 验证。

常见问题

systemd timer 和 cron 该用哪个?
timer 的优势:可依赖 systemd 服务、能记录日志到 journal、支持错过后补跑(Persistent)、可与其它 unit 定义依赖。新系统建议用 timer,cron 仍适合简单场景。
改了配置为什么不生效?
新增或修改 .timer/.service 后必须执行 sudo systemctl daemon-reload,再 restart/enable 对应 timer,否则 systemd 仍用旧配置。
错过的任务会自动补跑吗?
只有设置 Persistent=true 时,机器关机期间错过的触发会在下次启动后补跑一次。否则跳过不再补。
OnCalendar 写法看不懂怎么办?
用 systemd-analyze calendar "…" 校验并显示「下次触发时间」。格式为「星期 年-月-日 时:分:秒」,也可直接用 hourly / daily / weekly 等别名。

延伸阅读

相关工具