示例
通过定时器预定执行的服务文件一般无需任何修改。以下示例将预定执行 foo.service
,因此它的定时器应该被命名为 foo.timer
。
单调定时器
定义一个在系统启动 15 分钟后执行,且之后每周都执行一次的定时器:
/etc/systemd/system/foo.timer
[Unit]
Description=Run foo weekly and on boot
[Timer]
OnBootSec=15min
OnUnitActiveSec=1w
[Install]
WantedBy=timers.target
实时定时器
定义一个每周执行一次(具体来讲,指周一凌晨零点)的定时器。如果上次未执行(比如说系统当时没有开机,这个行为由 Persistent=true
定义)就立即执行服务。
/etc/systemd/system/foo.timer
[Unit]
Description=Run foo weekly
[Timer]
OnCalendar=weekly
Persistent=true
[Install]
WantedBy=timers.target
更精确的时间可以通过 OnCalendar
参数以下列方式指定:
星期 年-月-日 时:分:秒
可以用星号来表示任意值,用逗号分列可能值。以 ..
分隔的两个值指两个值间的连续序列。
这是在每个月的前四天晚上中午 12 点,但仅当这一天是周一和周四时运行的例子:
OnCalendar=Mon,Tue *-*-01..04 12:00:00
在每个月的第一个星期六运行:
OnCalendar=Sat *-*-1..7 18:00:00
如果不需要以星期几来界定,比如说在每天四点运行,请去掉星期项:
OnCalendar=*-*-* 4:00:00
在不同的时间运行一个服务可以以多次指定 OnCalendar
的方式表示。在下面的例子中,这个服务在周内的 22:30 和周末的 20:00 运行:
OnCalendar=Mon..Fri 22:30
OnCalendar=Sat,Sun 20:00