/etc/cron.hourly
我注意到,在 Debian 相关系统上, , ...中的系统级 crontab 脚本/etc/cron.daily
正在逐渐停用,以支持 systemd 计时器。例如:
$ cat logrotate
#!/bin/sh
# skip in favour of systemd timer
if [ -d /run/systemd/system ]; then
exit 0
fi
...
我认为目标之一是逐步停用 cron 和 anacron。 (见注1)
对我来说,cron 的一个关键用例是用户定义的 crontabs ( crontab -e
),它允许用户安排自己的作业以自己的用户身份运行,而不需要系统管理员权限。
systemd 中当前或计划中是否有任何功能允许非管理员用户安排重复任务?
注1:
稍微弱化一下之前的声明,除了那些唱衰 cron 和歌颂 systemd 定时器的讨论之外,我没有发现任何特别好的讨论。我没有发现任何证据表明这种发展方向是由 Linux 发行版之神传承下来的。然而我确实注意到它是一个旅行方向。因此,这一声明仅基于这样的想法:如果这是一个行进方向,并且随着时间的推移,我预计大多数/所有包最终都会走同样的路并使一个系统(cron)冗余。
答案1
用户可以设置系统定时器,基本上是通过创建服务和计时器~/.config/systemd/user
并启用计时器。
从用户定义的 cron 作业切换到 systemd 计时器会丢失两个主要功能(这是好是坏取决于具体情况):
- systemd 服务不会通过电子邮件发送结果;
- systemd 用户计时器仅在用户会话处于活动状态时运行,除非用户被配置为逗留(这是管理员需要做的事情)。
与 cron 作业相比,使用 systemd 计时器增加了许多可能性;例如时间规范是更具表现力与 cron 相比,计时器可以配置为满足其他要求,例如“仅当特定 VPN 启动时”。 (当然,所有这些细节也可以写在 cron 作业中......)我还发现 systemd 计时器比 cron 作业更好管理:很容易看到计时器的状态以及下次触发的时间。
在 Debian 中,您所看到的模式用于避免重复任务运行两次,一次由 systemd 运行,另一次由 cron 或 anacron (无论出于何种原因)运行。这并不意味着有一个将军目标停用 cron 或 anacron。