Systemd定时器简介
https://www.ruanyifeng.com/blog/2018/03/systemd-timer.html
Systemd定时器常用命令
systemctl list-timers
NEXT | LEFT | LAST | PASSED | UNIT | ACTIVATES | DESCRIPTION |
---|
下一次定时器将触发的时间戳 | 下一次定时器触发前还剩下的时间 | 上一次定时器触发的时间戳 | 从上一次定时器触发到现在经过的时间 | 定时器单元的名称 | 定时器关联的单元名称 | 定时器描述信息 |


查看所有定时器单元
systemctl list-unit-files --type timer

查看开机自启动的定时器
systemctl list-unit-files --type timer --state enabled

自动运行指定定时器
systemctl enable myscript.timer
Systemd定时器示例
用定时器每月更新Unbound的root.hints
[Unit]
Description=Updates mlocate database every day
[Timer]
OnCalendar=daily
AccuracySec=24h
Persistent=true
[Install]
WantedBy=timers.target
定时器常用参数
参数 | 解释 |
---|
OnActiveSec | 定时器生效后,多少时间开始执行任务 |
OnBootSec | 系统启动后,多少时间开始执行任务 |
OnStartupSec | Systemd 进程启动后,多少时间开始执行任务 |
OnUnitActiveSec | 该单元上次执行后,等多少时间再次执行 |
OnUnitInactiveSec | 定时器上次关闭后多少时间,再次执行 |
OnCalendar | 基于绝对时间,而不是相对时间执行 |
AccuracySec | 如果因为各种原因,任务必须推迟执行,推迟的最大秒数,默认是60秒 |
Unit | 真正要执行的任务,默认是同名的带有.service后缀的单元 |
Persistent | 如果设置了该字段,即使定时器到时没有启动,也会自动执行相应的单元 |
WakeSystem | 如果系统休眠,是否自动唤醒系统 |
自定义示例
vim /etc/systemd/system/${服务单元同名}.timer
[Unit]
Description=Timer to restart edge daily at 3 AM
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now ${服务单元同名}.timer
systemctl status edge.timer -l
systemctl list-timers --all
journalctl -u [timer-name]