我使用systemd-cron
which 在 /lib/systemd 下创建单元文件。单位文件cron-daily.timer
有
[Timer]
OnCalendar=daily
这会在午夜触发脚本。我希望他们改为在凌晨 3 点触发。
如果我override.conf
在cron-daily.timer.d
目录下创建/etc/systemd/system
有
[Timer]
OnCalendar=*-*-* 03:00:00
并运行 daemon-reload,重新启动计时器并运行systemctl list-timers
它仍然希望在 00:00:00 运行。但是,如果我改变我override.conf
的
[Timer]
OnCalendar=hourly
然后它想按预期每小时运行一次。为什么我不能覆盖服务以在特定时间运行?
systemd 计时器单位可以采用多种
OnCalendar=
规格,因此当您创建覆盖以在凌晨 3 点运行时,您实际上是在添加该时间(使其每天运行两次,在午夜和凌晨 3 点。)当您列出计时器时,它会向您显示它的下一个时间表,除非您在午夜和凌晨 3 点之间运行该命令,否则您将看到的是在午夜运行的原始命令,可能给您的印象是您的配置没有不行。(当您将其设置为时,
hourly
您可能会看到更改,除非您在晚上 11 点到午夜之间运行该命令。)要更改 cron 每日运行,使其使用覆盖文件在凌晨 3 点运行,只需
daily
先清除先前的定义 ( ),您可以通过将其设置OnCalendar=
为空值来实现。计时器单元的 systemd 手册页实际上记录了这一点,尽管您可以在
OnActiveSec=
和 Friends下找到它,其中说: