簡介:
cron來源於希臘單詞chronos(意爲“時間”),是linux系統下一個自動執行指定任務的程序。例如,你想在每晚睡覺期間創建某些文件或文件夾的備份,就可以用cron來自動執行。
CentOS的cron默認是開機啓動的,如果沒有開機啓動可以用chkconfig
查看crond是否開機啓動
crond 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
說明已經是開機啓動。
cron是執行crontab裏的任務,所以要把任務加到crontab裏。
1.查看當前用戶的任務。
no crontab for chenlb
現在還沒有任務,可以用crontab -e來編輯任務(可以直接輸入crontab是新建,然後回車,Ctrl+D保存,注意這樣會覆蓋以前的,不建議直接用crontab),然後再新的文件裏輸入以下內容。
2.編輯任務
上面的意思是指每一分鐘打印時間放到/home/chenlb/cron-log.txt文件裏,過一分鐘後看是否有效,如下命令。
Wed Jul 2 15:43:01 CST 2008
3.刪除任務
說明:如果是root除了有以上的功能,還有-u參數爲用戶查看、編輯、刪除任務,如用chenlb編輯任務。
解說下任務的語法:
min hour day month week user command
忽略用“*”,每多少的用“/多少”,多個的用“,”,到關係的用“-”
---------------------------------來自htmlor's blog的示例----------------------------------------------
以下是cron語句中的字段與字段說明:
字段 | 說明 |
1 | 分鐘(0-59) |
2 | 小時(2-24) |
3 | 日期(1-31) |
4 | 月份(1-12;或英文縮寫Jan、Feb等) |
5 | 周幾(0-6,0爲週日;或單詞縮寫Sun、Mon等) |
6 | 用戶名(執行命令時以此用戶的身份) |
7 | 要執行的命令(路徑) |
現在來看第一行:
這條語句將在每天的凌晨3點12分(03:12)運行 tar czf /usr/local/backups/daily/etc.tar.gz /etc
命令。>> /dev/null 2>&1
表示把所有標準輸出發送到 /dev/null(linux的回收站),把標準錯誤輸出(2)發送到和標準輸出(1)同樣的地方(即 /dev/null)。運行這行命令將不會產生任何輸出。
這條語句可以變得稍微複雜一點:
它將在6月13日週一的15:30運行 tar czf /usr/local/backups/daily/etc.tar.gz /etc
命令。
以下語句可以達到同樣的效果:
如果你想以用戶joey的身份每小時的第15分鐘運行某個程序,可以使用:
其中的星號(*)是通配符,表示cron將忽略這個字段。
如果你想每兩小時就運行某個程序,可以在小時字段裏使用 */2
。它將會在2點,4點,6點……22點,24點運行。具體語句如下:
cron語句中還可以使用逗號(,)來指定多個時間。例如你想在每小時的15分和30分運行某個程序,可以在分鐘字段使用 15,30
:
如果你想在每月的第一週(即1號到7號)每天的指定時間運行某個程序,可以在日期字段使用 1-7
:
這條語句將在每月的第1-7日每兩小時的15分和30分(02:15,02:30……22: 15,22:30等)運行 /usr/bin/somecommand
命令。
如果你想在每天的16:18執行一個腳本集合,可以把所有要執行的腳本放到一個目錄中(如 /home/username/cron),可以使用:
如果你想保存某個程序的輸出結果, 可以把 >> /dev/null 2>&1
替換爲 >> /home/user/somecommand.log 2>&1
。
參考:http://blog.htmlor.com/2006/07/25/cron_guide/