一.關於crond
crond的作用
crond是Linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啓動此任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有 要執行的工作便會自動執行該工作。而Linux任務調度的工作主要分爲以下兩類:系統執行的工作:系統週期性所要執行的工作,如備份系統數據、清理緩存
個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件服務器是 否有新信,這些工作可由每個用戶自行設置
- 服務的啓動和停止
cron服務是linux的內置服務,但它不會開機自動啓動。可以用以下命令啓動和停止服務:
命令 | 描述 |
---|---|
/sbin/service crond start | 啓動 |
/sbin/service crond stop | 停止 |
/sbin/service crond restart | 重啓服務 |
/sbin/service crond reload | 重新加載配置 |
要把cron設爲在開機的時候自動啓動,在 /etc/rc.d/rc.local 腳本中加入 /sbin/service crond start 即可。
二.關於crontab
crontab是一個很方便的在unix/linux系統上定時(循環)執行某個任務的程序使用cron服務,用 service crond status 查看 cron服務狀態,如果沒有啓動則 service crond start啓動它,cron服務是一個定時執行的服務,可以通過crontab 命令添加或者編輯需要定時執行的任務:
命令 | 描述 |
---|---|
crontab -l | 查看當前用戶的cron配置 |
crontab -e | 編輯當前用戶的cron配置 |
crontab -r | 刪除當前用戶的cron配置 |
crontab -u | 設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數 |
crontab -u root -l | root查看自己的cron設置 |
crontab -u fred -r | root想刪除fred的cron設置 |
crontab -u root -e | 在編輯cron服務時,編輯的內容有一些格式和約定 |
crontab -l | 列出當前的crontab任務 |
crontab -d | 刪除當前的crontab任務 |
crontab -e (solaris5.8上面是 crontab -r) | 編輯一個crontab任務,ctrl_D結束 |
crontab filename | 以filename做爲crontab的任務列表文件並載入 |
示例
以下是兩個cron語句的例子(在 /etc/crontab 文件裏)。- 12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
//用來晚間備份 /etc 目錄 - 52 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1
//運行Analog程序處理服務器的統計信息
- 12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
以下是cron語句中的字段與字段說明:
字段 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
說明 | 分鐘(0-59) | 小時(2-24) | 日期(1-31) | 月份(1-12;或英文縮寫Jan、Feb等) | 周幾(0-6,0爲週日;或單詞縮寫Sun、Mon等) | 用戶名(執行命令時以此用戶的身份) |
第 6 個字段是一個要在適當時間執行的字符串
- 實例:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6點10分
10 6 * * * date
#每兩個小時
0 */2 * * * date (solaris 5.8似乎不支持此種寫法)
#晚上11點到早上8點之間每兩個小時,早上8點
0 23-7/2,8 * * * date
#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * mon-wed date
#1月份日早上4點
0 4 1 jan * date
三.測試代碼
- 啓動crond
/sbin/service crond start //若提示沒有權限可加上sudo
- 查看當前用戶的cron配置並且編輯當前用戶的cron配置
crontab -l
crontab -e
//然後輸入以下命令
*/1 * * * * ~/run.sh //每隔一分鐘向shell發一封郵件
輸入crontab -l命令,每隔一分鐘輸入一次,則會出現以下現象;
結果圖:
刪除當前用戶的cron配置