我用CentOS為例。
簡介:
cron來源于希臘單詞chronos(意為“時(shí)間”),是linux系統(tǒng)下一個(gè)自動(dòng)執(zhí)行指定任務(wù)的程序。例如,你想在每晚睡覺期間創(chuàng)建某些文件或文件夾的備份,就可以用cron來自動(dòng)執(zhí)行。
CentOS的cron默認(rèn)是開機(jī)啟動(dòng)的,如果沒有開機(jī)啟動(dòng)可以用chkconfig
[root@chenlb-pc ~]# chkconfig crond on
查看crond是否開機(jī)啟動(dòng)
[root@chenlb-pc ~]# chkconfig --list crond
crond 0:關(guān)閉 1:關(guān)閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關(guān)閉
說明已經(jīng)是開機(jī)啟動(dòng)。
cron是執(zhí)行crontab里的任務(wù),所以要把任務(wù)加到crontab里。
1.查看當(dāng)前用戶的任務(wù)。
[chenlb@chenlb-pc ~]$ crontab -l
no crontab for chenlb
現(xiàn)在還沒有任務(wù),可以用crontab -e來編輯任務(wù)(可以直接輸入crontab是新建,然后回車,Ctrl+D保存,注意這樣會(huì)覆蓋以前的,不建議直接用crontab),然后再新的文件里輸入以下內(nèi)容。
2.編輯任務(wù)
[chenlb@chenlb-pc ~]$ crontab -e
*/1 * * * * echo `date` >> /home/chenlb/cron-log.txt
上面的意思是指每一分鐘打印時(shí)間放到/home/chenlb/cron-log.txt文件里,過一分鐘后看是否有效,如下命令。
[chenlb@chenlb-pc ~]$ tail /home/chenlb/cron-log.txt
Wed Jul 2 15:43:01 CST 2008
3.刪除任務(wù)
[chenlb@chenlb-pc ~]$ crontab -r
說明:如果是root除了有以上的功能,還有-u參數(shù)為用戶查看、編輯、刪除任務(wù),如用chenlb編輯任務(wù)。
[root@chenlb-pc ~]# crontab -u chenlb -e
解說下任務(wù)的語法:
min hour day month week user command
忽略用“*”,每多少的用“/多少”,多個(gè)的用“,”,到關(guān)系的用“-”
---------------------------------來自htmlor's blog的示例----------------------------------------------
以下是cron語句中的字段與字段說明:
字段 |
說明 |
1 |
分鐘(0-59) |
2 |
小時(shí)(2-24) |
3 |
日期(1-31) |
4 |
月份(1-12;或英文縮寫Jan、Feb等) |
5 |
周幾(0-6,0為周日;或單詞縮寫Sun、Mon等) |
6 |
用戶名(執(zhí)行命令時(shí)以此用戶的身份) |
7 |
要執(zhí)行的命令(路徑) |
|
|
現(xiàn)在來看第一行:
12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
這條語句將在每天的凌晨3點(diǎn)12分(03:12)運(yùn)行 tar czf /usr/local/backups/daily/etc.tar.gz /etc
命令。>> /dev/null 2>&1
表示把所有標(biāo)準(zhǔn)輸出發(fā)送到 /dev/null(linux的回收站),把標(biāo)準(zhǔn)錯(cuò)誤輸出(2)發(fā)送到和標(biāo)準(zhǔn)輸出(1)同樣的地方(即 /dev/null)。運(yùn)行這行命令將不會(huì)產(chǎn)生任何輸出。
這條語句可以變得稍微復(fù)雜一點(diǎn):
30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
它將在6月13日周一的15:30運(yùn)行 tar czf /usr/local/backups/daily/etc.tar.gz /etc
命令。
以下語句可以達(dá)到同樣的效果:
30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
如果你想以用戶joey的身份每小時(shí)的第15分鐘運(yùn)行某個(gè)程序,可以使用:
15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1
其中的星號(hào)(*)是通配符,表示cron將忽略這個(gè)字段。
如果你想每兩小時(shí)就運(yùn)行某個(gè)程序,可以在小時(shí)字段里使用 */2
。它將會(huì)在2點(diǎn),4點(diǎn),6點(diǎn)……22點(diǎn),24點(diǎn)運(yùn)行。具體語句如下:
0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1
cron語句中還可以使用逗號(hào)(,)來指定多個(gè)時(shí)間。例如你想在每小時(shí)的15分和30分運(yùn)行某個(gè)程序,可以在分鐘字段使用 15,30
:
15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1
如果你想在每月的第一周(即1號(hào)到7號(hào))每天的指定時(shí)間運(yùn)行某個(gè)程序,可以在日期字段使用 1-7
:
15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1
這條語句將在每月的第1-7日每兩小時(shí)的15分和30分(02:15,02:30……22: 15,22:30等)運(yùn)行 /usr/bin/somecommand
命令。
如果你想在每天的16:18執(zhí)行一個(gè)腳本集合,可以把所有要執(zhí)行的腳本放到一個(gè)目錄中(如 /home/username/cron),可以使用:
18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1
如果你想保存某個(gè)程序的輸出結(jié)果, 可以把 >> /dev/null 2>&1
替換為 >> /home/user/somecommand.log 2>&1
。
參考:
http://blog.htmlor.com/2006/07/25/cron_guide/
posted on 2008-07-02 16:23
流浪汗 閱讀(5400)
評(píng)論(0) 編輯 收藏 所屬分類:
Linux