Systemd定时器简介
https://www.ruanyifeng.com/blog/2018/03/systemd-timer.html
Systemd定时器常用命令
# 列出当前系统中所有活动的 systemd 定时器
systemctl list-timers
查看所有定时器单元
# 查看所有Timer单元
systemctl list-unit-files --type timer
查看开机自启动的定时器
# 查看开机自启动的定时器
systemctl list-unit-files --type timer --state enabled
自动运行指定定时器
# 自动运行指定定时器
systemctl enable myscript.timer
Systemd定时器示例
# /usr/lib/systemd/system/mlocate-updatedb.timer - mlocate 数据库更新定时器
[Unit]
# - 每天更新 mlocate 数据库的定时器
Description=Updates mlocate database every day
[Timer]
# Unit 选项的默认值为与定时器同名的服务单元 /usr/lib/systemd/system/mlocate-updatedb.service;
# 因此该定时器会触发并启动 /usr/lib/systemd/system/mlocate-updatedb.service 服务单元。
# - 定时器每天运行一次
OnCalendar=daily
# - 最大推迟时间为 24小时
AccuracySec=24h
# - 如果定时器错过预定的运行时间,定时器将在系统下一次开机时运行
Persistent=true
[Install]
# - 将定时器单元安装到 timers.target 中,以便系统会自动启动该定时器
WantedBy=timers.target
定时器常用参数
参数 | 解释 |
---|---|
OnActiveSec | 定时器生效后,多少时间开始执行任务 |
OnBootSec | 系统启动后,多少时间开始执行任务 |
OnStartupSec | Systemd 进程启动后,多少时间开始执行任务 |
OnUnitActiveSec | 该单元上次执行后,等多少时间再次执行 |
OnUnitInactiveSec | 定时器上次关闭后多少时间,再次执行 |
OnCalendar | 基于绝对时间,而不是相对时间执行 |
AccuracySec | 如果因为各种原因,任务必须推迟执行,推迟的最大秒数,默认是60秒 |
Unit | 真正要执行的任务,默认是同名的带有.service后缀的单元 |
Persistent | 如果设置了该字段,即使定时器到时没有启动,也会自动执行相应的单元 |
WakeSystem | 如果系统休眠,是否自动唤醒系统 |