Linux中的crond:設置週期性被執行的指令
crond與crontab密不可分,簡言之,crond是crontab的一個守護進程。
crontab是一個命令,它從標準輸入設備讀取指令,存放於“contab文件”中,供以後讀取和執行。
crond時Linux下用來週期性的執行某種任務或等待處理某些事件的一個守護進程。它與windows下的計劃任務類似,當安裝完成操作系統後,默認會安裝此服務工具,並且會自動啓動crond進程,crond進程會每分鐘定期檢查是否有要執行的任務,若有,則自動執行該任務。
在系統調度任務下,/etc/crontab配置文件中的內容
crontab使用格式:crontab [ -u user ] [ file ]
crontab [ -u user ] [ -e|-l|-r|-i]
-u user:設定某個用戶的crontab服務,此參數一般有root用戶來運行
file:命令文件的名字,即將file作爲crontab的任務列表文件並載入crontab。若沒有指定這個文件,crontab命令將接受標準輸入(鍵盤)上鍵入的命令,並將它們載入crontab中
-e:編輯某個用戶的crontab文件內容。若不指定,則默認爲當前用戶的crontab文件
-l:顯示某個用戶的crontab文件內容。若不指定,則默認爲當前用戶的crontab文件
-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件。若不指定,則默認爲當前用戶的crontab文件
-i:在刪除用戶的crontab文件時給確認提示
crontab文件的含義:用戶所建立的crontab文件中,每一行代表一項任務,每行的每個字段代表一項設置。格式分爲六個字段,前五個字段是時間設定段,第六段是要執行的命令段
*:代表所有可能的值
,:用逗號隔開的值指定一個列表的範圍,eg:"1, 2, 5, 7, 8, 9"
-:中槓。整數之間用其表示一個整數的範圍,eg:"2-6"表示"2, 3, 4, 5, 6"
/:正斜線。指定時間的間隔頻率,eg:"0-23/2"表示每兩小時執行一次。/與*也可一起使用,eg:"*/10"如果用在minute字段,表示每十分鐘執行一次
eg:
30 3 * * 6 /webdata/bin/backup.sh 表示每週六3點30分執行/webdata/bin/backup.sh腳本操作
0 0 1,20 * * fsck/dev/sdb8 表示每月的1號和20號檢查/dev/sdb8磁盤設備
使用crontab工具的注意事項:
1.環境變量
有時我們創建了一個crontab,但是這個任務卻無法自動執行,而手動執行這個任務沒有問題,這種情況下一般是由於在crontab文件中沒有配置環境變量引起的。因爲我們手動執行某個任務時,是在當前的shell環境下進行的,程序當然能找到環境變量,而系統自動執行任務調度時,是不會加載任何環境變量,所以,需要在crontab文件中指定任務運行所需要的所有環境變量。
2.注意清理系統用戶的郵件日誌
每條任務調度執行完畢,系統都會講任務輸出的信息通過電子郵件的形式發送給當前系統的用戶,這樣日積月累。日誌信息量會非常大,可能會影響系統的正常運行,所以,將每條任務進行重定向處理非常重要
3.系統級任務調度與用戶級任務調度
系統級任務調度主要完成系統的一些維護操作,用戶級任務調度完成用戶自定義的一些任務。注意:如果要定義一個重啓系統的任務,就必須將任務放在/etc/crontab文件,即使在root用戶下創建一個定時重啓系統的任務也是無效的