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