這個“ crontab -e ”是針對使用者的 cron 來設計的,如果是“系統的例行性任務”時, 該怎么辦呢?是否還是需要以 crontab -e 來管理你的例行性工作調度呢?當然不需要,你只要編輯/etc/crontab 這個文件就可以。有一點需要特別注意,那就是 crontab -e 這個 crontab 其實是 /usr/bin/crontab 這個可執行文件,但是 /etc/crontab 可是一個“純文本文件”,你可以root 的身份編輯一下這個文件。
基本上, cron 這個服務的最低偵測限制是“分鐘”,所以“ cron 會每分鐘去讀取一次/etc/crontab 與 /var/spool/cron 里面的數據內容 ”,因此,只要你編輯完 /etc/crontab 這個文件,并且將他儲存之后,那么 cron 的設置就自動的會來執行了!
在 Linux 下面的 crontab 會自動的幫我們每分鐘重新讀取一次 /etc/crontab 的例行工作事項,但是某些原因或者是其他的 Unix 系統中,由于 crontab 是讀到內存當中的,所以在你修改完 /etc/crontab 之后,可能并不會馬上執行, 這個時候請重新啟動 crond 這個服務:
systemctl restart crond
這個文件與將剛剛我們下達 crontab -e的內容幾乎完全一模一樣!只是有幾個地方不太相同:
MAILTO=root:
這個項目是說,當 /etc/crontab 這個文件中的例行性工作的指令發生錯誤時,或者是該工作的執行結果有 STDOUT/STDERR 時,會將錯誤訊息或者是屏幕顯示的訊息傳給誰?默不過, 由于 root 并無法在用戶端中以 POP3 之類的軟件收信,因此,通常都將這個 e-mail 改成自己的帳號,好讓我隨時了解系統的狀況!例如: MAILTO=dmtsai@my.host.name認當然是由系統直接寄發一封 mail 給 root。
PATH=....:
“分 時 日 月 周 身份 指令”七個字段的設置
這個 /etc/crontab 里面可以設置的基本語法與 crontab -e 不太相同!前面同樣是分、時、日、月、周五個字段, 但是在五個字段后面接的并不是指令,而是一個新的字段,那就是“執行后面那串指令的身份”為何!這與使用者的 crontab -e 不相同。由于使用者自己的 crontab并不需要指定身份,但 /etc/crontab 里面當然要指定身份啦!以上表的內容來說,系統默認的例行性工作是以 root 的身份來進行的。
crond 服務讀取配置文件的位置
一般來說,crond 默認有三個地方會有執行腳本配置文件,他們分別是:
/etc/crontab
/etc/cron.d/*
/var/spool/cron/*
這三個地方中,跟系統的運行比較有關系的兩個配置文件是放在 /etc/crontab 文件內以及/etc/cron.d/* 目錄內的文件, 另外一個是跟用戶自己的工作比較有關的配置文件,就是放在/var/spool/cron/ 里面的文件群。 現在我們已經知道了 /var/spool/cron 以及 /etc/crontab 的內容,那現在來瞧瞧 /etc/cron.d 里面的東西吧!
如果你想要自己開發新的軟件,該軟件要擁有自己的 crontab 定時指令時,就可以將“分、時、日、月、周、身份、指令”的配置文件放置到 /etc/cron.d/ 目錄下! 在此目錄下的文件是“crontab 的配置文件腳本”。
個人化的行為使用“ crontab -e ”:如果你是依據個人需求來創建的例行工作調度,建議直接使用 crontab -e 來創建你的工作調度較佳, 這樣也能保障你的指令行為不會被大家看到 。
系統維護管理使用“ vim /etc/crontab ”:如果你這個例行工作調度是系統的重要工作,為了讓自己管理方便,同時容易追蹤,建議直接寫入 /etc/crontab 較佳。
自己開發軟件使用“ vim /etc/cron.d/newfile ”:如果你是想要自己開發軟件,那當然最好就是使用全新的配置文件,并且放置于 /etc/cron.d/ 目錄內即可。
固定每小時、每日、每周、每天執行的特別工作:如果與系統維護有關,還是建議放置到 /etc/crontab 中來集中管理較好。 如果想要偷懶,或者是一定要再某個周期內進行的任務,也可以放置到上面談到的幾個目錄中,直接寫入指令即可。
15.3.3 一些注意事項
有的時候,我們以系統的 cron 來進行例行性工作的創建時,要注意一些使用方面的特性。 舉例來說,如果我們有四個工作都是五分鐘要進行一次的,那么是否這四個動作全部都在同一個時間點進行? 如果同時進行,該四個動作又很耗系統資源,如此一來,每五分鐘的某個時刻不是會讓系統忙得要死?所以要注意:
資源分配不均的問題
當大量使用 crontab 的時候,總是會有問題發生的,最嚴重的問題就是“系統資源分配不均”的問題,包括:
流量
區域內其他 PC 的流量偵測
CPU 使用率
RAM 使用率
線上人數實時偵測
如果每個流程都在同一個時間啟動的話,那么在某個時段時,我的系統會變的相當的繁忙,所以,這個時候就必須要分別設置,我可以這樣做:
注意:
取消不要的輸出項目,安全的檢驗,周與日月不可同時并存。