欢迎来到 Debian;你不再使用 cron。

欢迎来到 Debian;你不再使用 cron。

我在 SE.com 上阅读了许多有关 cronjobs、crontab 以及如何重新安排 cron 作业的帖子。但似乎在我的 Debian 环境中,会话清理作业计划简单地称为“php”,存在于 /etc/cron.d 中,指定 root 作为用户,当前每 30 分钟运行一次,无法重新安排,除非重新启动

cat /etc/cron.d/php

返回:

9,39 8-20     * * *     root   [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean 2>>/dev/null; fi

尽管 /etc/init.d/cron restart ,我所做的任何小时/分钟更改都不会被考虑在内。它位于生产服务器上,因此主机无法轻松重新启动,或者作为实验。

我可以发出一个命令来告诉 crond 考虑任何重新安排吗?

答案1

欢迎来到 Debian;你不再使用 cron。

M. Kitt 是对的,Stack Exchange 更喜欢每个问题一个问题,但在这种情况下,这两个问题都源于您所犯的一个根本错误:您错误地认为您正在运行 cron 作业。

正如您在前面的 cron 作业描述中所看到的,您的 cron 作业正在禁用自己因为他们看到 systemd 在您的系统上运行:

… && 如果 [ ! -d /run/systemd/system ];然后 … ;菲

/etc/cron.d/php顺便说一下,这并不是非官方的。它的安装方式是Debian php-common 软件包。运行的东西也是从同一个包安装的代替那个 cron 作业:

如今,人们可以在越来越多的此类 Debian 软件包中发现这种模式:cron 作业被 systemd 单元取代,并且(仅)在 systemd 运行时自行禁用。

因此,调整 cron 表中的调度不会有任何效果(除了更改 shell 命令的执行时间)什么也没做已安排)。同样,在 cron 表中设置环境变量也不会起到任何作用。您需要更改计时器单元中的调度,并更改服务单元中的环境变量。

其详细信息超出了本答案的范围,但您需要简单地了解 systemd 单元、单元覆盖文件以及systemctl catsystemctl statussystemctl edit命令。

进一步阅读

相关内容