除非重新啟動,否則似乎不考慮 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 考慮任何重新安排?
歡迎來到 Debian;你不再使用 cron。
M. Kitt 是正確的,Stack Exchange 更喜歡每個問題一個問題,但在這種情況下,這兩個問題都源於您所犯的一個基本錯誤:您錯誤地假設您正在執行 cron 作業。
正如您在您面前的 cron 作業描述中所見,您的 cron 作業正在禁用自己,因為它們看到 systemd 在您的系統上執行:
… && 如果 [ !-d /執行/系統/系統];然後 … ; 菲
/etc/cron.d/php
順便說一句,這不是非官方的。它由Debian php-common 軟體包安裝。也從同一個包安裝的是執行而不是那個 cron 作業的東西:
- 一個名為的 systemd 計時器單元
phpsessionclean.timer
- 一個名為的 systemd 服務單元
phpsessionclean.service
這是當今越來越多的此類 Debian 軟體包中可以找到的一種模式:cron 作業被 systemd 單元取代,並在(僅)systemd 執行時自行禁用。
因此,調整 cron 表中的調度將一無所獲(除了更改什麼都不做的 shell 命令被調度的時間)。同樣,在 cron 表中設置環境變數也無濟於事。需要修改timer單元中的調度,修改service單元中的環境變數。
詳細資訊超出了此答案的範圍,但您需要非常簡要地了解 systemd 單元、單元覆蓋文件以及
systemctl cat
、systemctl status
和systemctl edit
命令。進一步閱讀
- Lennart Poettering 等人。 “環境”。
systemd.exec
. systemd 手冊頁。自由桌面.org。- Lennart Poettering 等人。 “選項”。
systemd.timer
. systemd 手冊頁。自由桌面.org。- 如何對 .service 進行修改並保持其持久性?
- 放置使用者創建的 systemd 單元文件的位置
- https://unix.stackexchange.com/a/196252/5132