Debian

除非重新啟動,否則似乎不考慮 cron 重新安排?

  • April 19, 2018

我在 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 考慮任何重新安排?

歡迎來到 Debian;你不再使用 cron。

M. Kitt 是正確的,Stack Exchange 更喜歡每個問題一個問題,但在這種情況下,這兩個問題都源於您所犯的一個基本錯誤:您錯誤地假設您正在執行 cron 作業。

正如您在您面前的 cron 作業描述中所見,您的 cron 作業正在禁用自己,因為它們看到 systemd 在您的系統上執行:

… && 如果 [ !-d /執行/系統/系統];然後 … ; 菲

/etc/cron.d/php順便說一句,這不是非官方的。它由Debian php-common 軟體包安裝。也從同一個包安裝的是執行而不是那個 cron 作業的東西:

這是當今越來越多的此類 Debian 軟體包中可以找到的一種模式:cron 作業被 systemd 單元取代,並在(僅)systemd 執行時自行禁用。

因此,調整 cron 表中的調度將一無所獲(除了更改什麼都不做的 shell 命令調度的時間)。同樣,在 cron 表中設置環境變數也無濟於事。需要修改timer單元中的調度,修改service單元中的環境變數。

詳細資訊超出了此答案的範圍,但您需要非常簡要地了解 systemd 單元、單元覆蓋文件以及systemctl catsystemctl statussystemctl edit命令。

進一步閱讀

引用自:https://unix.stackexchange.com/questions/438285