我正在尝试让一个简单的 systemd 服务在计时器单元上运行。由于某种原因,systemd 似乎不喜欢我指定时间的方式。当我使用minutely
ordaily
作为 的值时,该脚本有效OnCalendar
,但现在我想将其设置为 5 分钟,systemd 给出错误:
/etc/systemd/system/backup.timer:7: Failed to parse calendar specification, ignoring: 5m
backup.timer: Timer unit lacks value setting. Refusing.
事情是,根据这一页,minutes
应该是一个可以理解的时间单位。他们有2hours
一个应该在那里工作的示例时间跨度,所以我不明白为什么5m
或者5minutes
在某种程度上无效。
这是我的计时器文件:
[Unit]
Description=Timer unit for backup.service
Requires=backup.service
[Timer]
Unit=backup.service
OnCalendar=5m
[Install]
WantedBy=timers.target
另一件事是,当我运行时systemd-analyze timespan 5minutes
它不会返回错误,并且它似乎能够正确解析该值:
Original: 5minutes
μs: 300000000
Human: 5min
答案1
5m
是一个时间-跨度。 OnCalendar=
预计时间-邮票。
根据系统时间(7),时间戳是时间上的唯一点,而时间跨度是持续时间。
如果您想保留OnCalendar=
,请使用如下时间戳:
minutely
,hourly
,daily
2012-11-23 11:12:13
Mon,Fri *-01/2-01,03 *:30:45
如果您确实想使用持续时间,请尝试OnActiveSec=
或OnBootSec=
which 需要一个持续时间并将其添加到设备激活或系统启动的时间中。看systemd.定时器(5)更多选项,例如OnUnitActiveSec=
(上次触发计时器的时间)
使用日历事件表达式定义实时(即挂钟)计时器。
日历事件表达式是“唯一的时间点”。