Freebsd

FreeBSD下將crontab拆分成幾個文件

  • August 9, 2012

使用 FreeBSD 9,我想知道將 /etc/crontab 拆分為多個文件的好方法。

例如,我想將所有與 postfix 相關的作業放在 /etc/cron.d/postfix 中,所有與 logrotate 相關的作業放在 /etc/cron.d/logrotate 等等。

當然,我可以使用周期性,但似乎所有作業都會在同一時間執行。

任何的想法?

根據 man 1 cron,它會搜尋 /var/cron/tabs/<usernames> 和 /etc/crontab。

編輯 1:我可能想嘗試這樣做的原因,正如 voretaq7 的回答中所問的那樣。

  • 一些公司使用沒有 cron 外掛和 augeas 工具的糟糕的自製單片機。
  • 編寫一些安裝一些第 3 方軟體的腳本:在 /etc/crontab 末尾附加作業是臟的。

請注意,/etc/rc.conf 和 /usr/local/etc/sudoers 已經具有此功能,因此我想知道是否有“FreeBSD 方式”來為預定作業執行此操作。

實際上,我更喜歡週期性腳本而不是 cronjobs,這正是因為周期性按順序執行所有腳本。您還可以添加更多周期性模式,例如將腳本放入目錄/etc/periodic/8hourly並添加 crontab 條目0 */8 * * * periodic 8hourly來執行它們。

對於具有不同使用者 ID 的子系統,您可以添加特定於使用者的 crontab 文件(其中crontab -u $user -e, 文件以 結尾/var/cron/tabs/$user)——但恕我直言,這比一個中央文件更難維護。

FreeBSD 的 cron 是傳統的 Vixie cron —— 它不支持您的要求。

坦率地說,我不明白您為什麼想要它:為什麼要將您的 crontab 分散到一堆文件中,而您無法清楚地了解什麼時候執行?

我一直發現按週期/頻率(每小時、每天、每週、每月、每年)排序的傳統 crontab 非常容易閱讀,並且在向日程表中添加新內容時很容易理解。

如果您想按功能單元拆分 crontab,您也可以這樣做 - 只需創建由空格和註釋分隔的塊。


如果這對於您的案例來說還不夠,並且您真的想要帶有cron.d目錄和子文件的 Linux 風格的 cron 結構,您可以擁有它:只需anacron從埠樹 ( sysutils/anacron) 安裝並根據需要進行配置。

確保記錄您所做的工作——我在職業生涯中遇到過很多 FreeBSD 系統,而且我從未遇到過不執行標準 Vixie cron 的系統。如果您創建的環境與通常的做事方式不同,您會希望每個人都知道您為什麼要更改它,以及他們應該如何處理系統。

引用自:https://serverfault.com/questions/414731