Cron

/etc/crontab 什麼時候檢查?

  • January 22, 2020

我在 cron 手冊頁上閱讀:

Cron 搜尋/var/spool/cron以帳戶命名的 crontab 文件/etc/passwd;找到的 crontab 被載入到記憶體中。Cron 還搜尋 目錄/etc/anacrontab 中的任何文件,這些文件/etc/cron.d具有不同的格式(請參閱 參考資料crontab(5))。Cron 檢查所有儲存的 crontab 並檢查每個作業以查看它是否需要在目前分鐘內執行

然後它說:

/etc/crontab系統 crontab。現在該文件預設為空。最初它通常用於執行每日、每週、每月的作業。預設情況下,這些作業現在通過讀取/etc/anacrontab配置文件的 anacron 執行。有關anacrontab(5)更多詳細資訊,請參閱。

好的,我很清楚如果/etc/crontab為空會發生什麼。

我的問題是:如果/etc/crontab存在的話,什麼時候讀?

注意:手冊頁來自 CentOS 8。

答案取決於cron您感興趣的確切變體。

在 Debian 中,cron守護程序被記錄為/etc/crontab在必要時重新載入:

就像,監視目錄中/etc/crontab的文件的更改。/etc/cron.d

實際上,主循環cron在每次迭代時都會重新載入所有數據庫(只有在文件發生更改時才會載入)。

在 Fedora 和衍生產品(包括 CentOS)中,cron 行為類似inotify如果可用,還需要額外的幫助。

如果您有一個完全記錄文件的cron實現crontab,那麼您必須使用歷史UNIX變體。30 多年來,該cron實用程序的唯一有效介面是通過crontab命令。

這就是為什麼POSIX根本不記錄該cron實用程序的原因,因為它是特定於實現的細節。

因此,請確保行為正確,並且僅用於crontab -l列出 crontab 或crontab -e編輯 crontab。

如果您編輯 crontab,該crontab命令會將 crontab 文件儲存在系統特定位置,並通知cron實用程序 crontab 已更改,需要重新讀取。

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