
我已經從 cron 切換到systemd-cron使用我的 Debian 不穩定係統,但現在每日「cron 作業」經常失敗,因為它運行 mixmaster,它從互聯網獲取資料庫,並且如果 cron-daily.timer 在網路啟動之前、從掛起喚醒之後被觸發到RAM,mixmaster 無法存取伺服器。
Apr 24 11:02:23 run-parts[13608]: /usr/bin/mixmaster-update: Get failed for http://www.noreply.org/echolot/pgp-all.asc (500 Can't connect to www.noreply.org:80)
Apr 24 11:02:23 run-parts[13608]: Downloading of mlist and/or mixring failed (do you need a proxy?). Aborting.
Apr 24 11:02:23 su[13809]: pam_unix(su:session): session closed for user mixmaster
Apr 24 11:02:23 run-parts[13608]: run-parts: /etc/cron.daily/mixmaster exited with return code 22
是否可以將計時器延遲到網路啟動並運行為止?
答案1
使用 systemd 計時器代替 cron。
然後在你的系統單元中,你可以指定After=network-online.target and Wants=network-online.target
。
答案2
使用 systemd 的計時器而不是 cron 可能更值得。然後,您應該能夠在單元中指定它所依賴的內容。
https://wiki.archlinux.org/index.php/Systemd#Handling_dependency
答案3
在我的設定cron 作業每分鐘運行一次,但如果沒有網路連接,則透過連接測試退出,例如
nc -zw3 github.com 22 || exit 0
當最終建立網路連線時,anacron 作業將每天執行一次。