首页/系统/信创系统运维速查/systemd timer 定时任务
服务与运维65 条

systemd timer 定时任务

用 .timer + .service 组合替代 cron:支持日历表达式、随机延迟与错过补跑(Persistent),执行记录进 journal 便于审计与排障。

信创系统运维速查系统更新于 2026-10-13

systemd timer 是什么

timer 是 systemd 提供的定时触发机制,由一对单元组成:timer 定义什么时候触发,同名 service 定义触发后执行什么,配置里用触发时间表达式代替计划任务的五个星号字段。相比 cron,它的优势是执行记录自动进 journal、支持随机延迟打散并发、支持机器关机期间错过的任务补跑,还能用依赖关系约束执行顺序。需要审计每轮任务的执行结果时,timer 比计划任务更好追溯。

基本信息

组成定时单元与业务单元成对,命名建议同名
触发时间用日历表达式描述,可写具体时刻或周期性时间点
补跑开启持续性选项后,关机期间错过的任务在开机后补执行
随机延迟可设置随机延迟秒数,打散集群内的并发压力
执行记录任务输出与结果进 journal,用单元名过滤即可
适用平台Kylin V10 / UOS 服务器版 / openEuler 等 systemd 系统

典型使用场景

  • 周期备份:每天固定时刻执行备份脚本,并保留每轮执行结果
  • 日志与缓存清理:按周执行清理任务,避免磁盘被逐步写满
  • 证书与授权到期检查:定期巡检并提前告警
  • 错峰执行:同一批机器设置随机延迟,避免整点集中打满存储与带宽
  • 错过补跑:夜间停机维护的机器开机后自动补跑该做的任务
  • 需要审计的场景:每轮任务的输出都自动留档,便于事后追溯

定时单元示例

定时单元示例
[Unit]
Description=Daily backup timer          # 单元描述

[Timer]
OnCalendar=*-*-* 02:30:00               # 每天 02:30 触发
Persistent=true                         # 错过的时间点在开机后补跑
RandomizedDelaySec=300                  # 最多随机延迟 5 分钟,打散并发
Unit=backup.service                     # 指定要触发的业务单元

[Install]
WantedBy=timers.target                  # 挂进定时器目标,enable 后生效

配套业务单元与启用

配套业务单元与启用
[Unit]
Description=Daily backup job

[Service]
Type=oneshot                            # 一次性任务,执行完即结束
ExecStart=/opt/scripts/backup.sh        # 必须写绝对路径

启用与核对

启用与核对
systemctl daemon-reload                  # 新增单元后必须重载
systemctl enable --now backup.timer      # 启用并立即纳入调度
systemctl list-timers --all              # 看下次触发时间与上次结果
systemctl start backup.service           # 手工触发一次,验证脚本可跑
journalctl -u backup.service -n 50 --no-pager   # 查执行记录与输出
定时单元未显式指定业务单元时,systemd 会按同名约定去找对应的服务单元;名称对不上又没显式指定,就会出现定时器启用了却永远不触发的现象。核对时用列出命令看下次触发时间是否合理,比翻配置文件更快。
一次性任务要用一次性类型,否则 systemd 会按常驻服务管理,执行完就判定为失败;需要补跑错过的任务必须开启持续性选项,只写触发时间在停机期间不会留下任何痕迹。

易错点

  • 定时单元与业务单元名称不一致又没显式指定目标单元,启用后从不触发,排查时容易怀疑时间表达式写错
  • 业务单元类型选成常驻服务,脚本执行完退出后被判定为失败,反复触发反而制造噪声
  • 不开启持续性选项,机器关机期间错过的备份不会补跑,数据保护出现静默缺口
  • 新增或修改单元文件后忘记重载,列表里看不到新定时器,误以为配置有问题

数据来源与参考

  • man 5 systemd.timer
  • openEuler 文档:systemd 定时任务
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌