crond 是linux下用來周期性的執行某種任務或等待處理某些事件的一個守護進程,與windows下的計划任務類似,當安裝完成操作系統后,默認會安裝此服務工具,並且會自動啟動crond進程,crond進程每分鍾會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
Linux下的任務調度分為兩類,系統任務調度和用戶任務調度。
系統任務調度
系統周期性所要執行的工作,比如寫緩存數據到硬盤、日志清理等。在/etc目錄下有一個crontab文件,這個就是系統任務調度的配置文件。

使用cat /etc/crontab 查看文件內容。 有五顆星星星提示。每顆星對應的解釋以及很清楚了。
前四行是用來配置crond任務運行的環境變量
第一行SHELL變量指定了系統要使用哪個shell,這里是bash
第二行PATH變量指定了系統執行命令的路徑
第三行MAILTO變量指定了crond的任務執行信息將通過電子郵件發送給root用戶,如果MAILTO變量的值為空,則表示不發送任務執行信息給用戶
第四行HOME變量指定了在執行命令或者腳本時使用的主目錄。
下面的星號,星號(*):代表所有可能的值,如month字段為星號,則表示在滿足其它字段的制約條件后每月都執行該命令操作。
如果是具體的值,可以使用下面的符號匹配。
逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”
中杠(-):可以用整數之間的中杠表示一個整數范圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。
用戶任務調度
用戶定期要執行的工作,比如用戶數據備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計划任務。所有用戶定義的crontab 文件都被保存在 /var/spool/cron目錄中。其文件名與用戶名一致。
crontab命令詳解
1.命令格式:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
2.命令功能:
通過crontab 命令,我們可以在固定的間隔時間執行指定的系統指令或 shell script腳本。時間間隔的單位可以是分鍾、小時、日、月、周及以上的任意組合。這個命令非常設合周期性的日志分析或數據備份等工作。
參數說明:
-u user:用來設定某個用戶的crontab服務,例如,“-u ixdba”表示設定ixdba用戶的crontab服務,此參數一般有root用戶來運行。
file:file是命令文件的名字,表示將file做為crontab的任務列表文件並載入crontab。如果在命令行中沒有指定這個文件,crontab命令將接受標准輸入(鍵盤)上鍵入的命令,並將它們載入crontab。
-e:編輯某個用戶的crontab文件內容。如果不指定用戶,則表示編輯當前用戶的crontab文件。
-l:顯示某個用戶的crontab文件內容,如果不指定用戶,則表示顯示當前用戶的crontab文件內容。
-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則默認刪除當前用戶的crontab文件。
-i:在刪除用戶的crontab文件時給確認提示。
相關文件定義:
權限文件
文件:/etc/cron.deny
說明:該文件中所列用戶不允許使用crontab命令
文件:/etc/cron.allow
說明:該文件中所列用戶允許使用crontab命令
文件:/var/spool/cron/
說明:所有用戶crontab文件存放的目錄,以用戶名命名
crontab日志路徑
/var/log/cron
只會記錄是否執行了某些計划的腳本,但是具體執行是否正確以及腳本執行過程中的一些信息則linux會每次都發郵件到該用戶下
/var/spool/mail/root

.crontab箴言
|
1
2
3
4
5
6
7
8
9
10
11
|
1.環境變量問題,例如
crontab
不能識別Java的環境變量
crontab
執行shell時,只能識別為數不多的環境變量,普通的環境變量是無法識別的,所以在編寫shell時,最好使用
export
重新聲明變量,確保腳本執行。
2.命令的執行最好用腳本
3.腳本權限加
/bin/sh
,規范路徑
/server/scripts
4.時間變量用反斜線轉義,最好用腳本
5.定時任務添加注釋
6.>
/dev/null
2>&1 ==>&>
/dev/null
,別隨意打印日志文件
7.定時任務里面的程序腳本盡量用全路徑
8.避免不必要的程序以及命令輸出
9.定時任務之前添加注釋
10.打包到文件目錄的上一級
|
