
我已經很好地掌握了 cron/anacron 在 Linux 上的工作原理。我的問題是這樣的:
/etc/cron.daily
anacron 在登入時運行,並檢查自運行中的腳本以來是否已經超過一天- anacron 運行 中的腳本
/etc/cron.daily
,並更新 中的時間戳/var/spool/anacron/cron.daily
- anacron 退出
- 計算機保持開啟超過 24 小時
- cron 運行並檢測 cron.daily 的時間匹配
- cron 從那時起什麼也沒做
test -x anacrontab" == True
如果我的電腦運行超過 24 小時,cron 如何運行 cron.daily 中的腳本(這是基於 Debian 的發行版)?
預設值/etc/crontab
(每分鐘運行一次)測試是否存在(或更準確地說,-x 位元)/usr/bin/anacron
,如果找到它,則忽略該/etc/cron.daily
資料夾,但它似乎不會重新啟動 anacron 來完成工作。
編輯:
因此 cron 確實從該資料夾啟動 anacron /etc/cron.d
,但前提是電腦每天上午 7:30 開啟並登入。在做了一些電子表格功夫之後,我得出的結論是,其中的腳本/etc/cron.daily
運行間隔將在 1 分鐘到 31.5 小時之間。
前任:
場景一:
- 2021年5月23日晚上11點59分登入
- 假設 anacron 時間戳記
/etc/cron.daily
早於 5/23/2021,anacron 執行所有腳本/etc/cron.daily
並將時間戳更新為 5/23/2021 - 登出
- 2021 年 5 月 24 日中午 12:00 重新登入
- anacron 看到上次運行是 5/23/2021,現在是 5/24/2021,所以 anacron 運行了所有腳本
/etc/cron.daily
- 兩次運轉之間的經過時間:1 分鐘
場景2:
- 2021年5月23日 12:00 登入
- 假設 anacron 時間戳記
/etc/cron.daily
早於 5/23/2021,anacron 執行所有腳本/etc/cron.daily
並將時間戳更新為 5/23/2021 - 電腦保持開啟並登入狀態至 2021 年 5 月 23 日上午 7:30
- cron 從其 crontab 檔案執行 anacron
/etc/cron.d
- 由於時間戳記是 5/23/2021,所以沒有任何反應
- 電腦保持開啟並登入狀態至 2021 年 5 月 24 日上午 7:30
- cron 從其 crontab 檔案執行 anacron
/etc/cron.d
- anacron 看到上次運行是 5/23/2021,現在是 5/24/2021,所以 anacron 運行了所有腳本
/etc/cron.daily
- 兩次運轉之間的經過時間:31.5 小時
答案1
所有系統/etc/cron.daily
、/etc/cron.weekly
等檔案都包含一個要執行的條目納克朗其中又包含一個要執行的條目計劃任務。/etc/crontab
包括條目運行部件以便納克朗要么由以下人員運行運行部件或透過計劃任務。
另一個需要考慮的檔案是/etc/anacrontab
它可以覆蓋某些效果/etc/crontab
一個重要的系統計劃任務相關文件是/etc/cron.daily/logrotate
用於啟動日誌輪替處理的腳本。
普通用戶定時任務獨立於系統 cronjobs 執行。
請注意,並不是/etc/crontab
每分鐘都運行 - 活動由各種 crontab 規範決定。