時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
cron來源于希臘單詞chronos(意為"時(shí)間"),是linux系統(tǒng)下一個(gè)自動(dòng)執(zhí)行指定任務(wù)的程序。例如,你想在每晚睡覺期間創(chuàng)建某些文件或文件夾的備份,就可以用cron來自動(dòng)執(zhí)行。服務(wù)的啟動(dòng)和停止cron服務(wù)是linux的內(nèi)置服務(wù),但它不會(huì)開機(jī)自動(dòng)啟動(dòng)??梢杂靡韵旅顔?dòng)和停止服務(wù):
/sbin/service crond start
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload
以上1-4行分別為啟動(dòng)、停止、重啟服務(wù)和重新加載配置。
要把cron設(shè)為在開機(jī)的時(shí)候自動(dòng)啟動(dòng),在 /etc/rc.d/rc.local 腳本中加入 /sbin/service crond start 即可。
查看、編輯和刪除cron把命令行保存在crontab(cron table)文件里,這個(gè)文件通常在 /etc 目錄下。每個(gè)系統(tǒng)用戶都可以有自己的crontab(在 /var/spool/cron/ 下)。
要查看當(dāng)前用戶的crontab,輸入 crontab -l;
要編輯crontab,輸入 crontab -e;
要?jiǎng)h除crontab,輸入 crontab -r。
如當(dāng)前是root身份,要查看/編輯/刪除/某用戶的crontab,只需在相應(yīng)的命令后加上 -u USERNAME(如 crontab -e -u USERNAME)即可。
crontab文件的默認(rèn)編輯器是vi,可以輸入 export VISUAL='editor' 更改默認(rèn)編輯器。
cron服務(wù)每分鐘不僅要讀一次 /var/spool/cron 目錄內(nèi)的所有文件,還需要讀一次 /etc/crontab 文件。配置這個(gè)文件也能讓cron執(zhí)行任務(wù)。使用crontab命令是對(duì)用戶級(jí)任務(wù)的配置,而編輯 /etc/crontab 文件是對(duì)系統(tǒng)級(jí)任務(wù)的配置。
語法說明
以下是兩個(gè)cron語句的例子(在 /etc/crontab 文件里)。前者用來晚間備份 /etc 目錄,后者運(yùn)行Analog程序處理服務(wù)器的統(tǒng)計(jì)信息。
12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
52 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1
以下是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>&1cron
語句中還可以使用逗號(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 。
總結(jié)
查看當(dāng)前用戶的cron配置,使用 crontab -l
編輯當(dāng)前用戶的cron配置,使用 crontab -e
刪除當(dāng)前用戶的cron配置,使用 crontab -r
以root身份查看/編輯/刪除某用戶的cron配置,在命令后加上 -u USERNAME 配置系統(tǒng)級(jí)的任務(wù),編輯 /etc/crontab 文件
Linux crontab詳解
Cron是一個(gè)linux下的定時(shí)執(zhí)行工具。
一、Cron 是Linux的內(nèi)置服務(wù),可以用以下的方法啟動(dòng)、關(guān)閉、重啟服務(wù):
/sbin/service crond start //啟動(dòng)服務(wù)
/sbin/service crond stop //關(guān)閉服務(wù)
/sbin/service crond restart //重啟服務(wù)
/sbin/service crond reload //重新載入配置
你也可以將這個(gè)服務(wù)在系統(tǒng)啟動(dòng)的時(shí)候自動(dòng)啟動(dòng):
在/etc/rc.d/rc.local這個(gè)腳本的末尾加上:
/sbin/service crond start
#p#副標(biāo)題#e#
二、直接用crontab命令編輯
cron服務(wù)提供crontab命令來設(shè)定cron服務(wù)的,以下是這個(gè)命令的一些參數(shù)與說明:
crontab -u //設(shè)定某個(gè)用戶的cron服務(wù),一般root用戶在執(zhí)行這個(gè)命令的時(shí)候需要此參數(shù)
crontab -l //列出某個(gè)用戶cron服務(wù)的詳細(xì)內(nèi)容
crontab -r //刪除某個(gè)用戶的cron服務(wù)
crontab -e //編輯某個(gè)用戶的cron服務(wù)
例:
比如說root查看自己的cron設(shè)置:crontab -u root -l
再例如,root想刪除fred的cron設(shè)置:crontab -u fred -r
在編輯cron服務(wù)時(shí),編輯的內(nèi)容有一些格式和約定,輸入:crontab -u root -e
進(jìn)入vi編輯模式,編輯的內(nèi)容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
這個(gè)格式的前一部分是對(duì)時(shí)間的設(shè)定,后面一部分是要執(zhí)行的命令,如果要執(zhí)行的命令太多,可以把這些命令寫到一個(gè)腳本里面,然后在這里直接調(diào)用這個(gè)腳本就可以了,調(diào)用的時(shí)候記得寫出命令的完整路徑。時(shí)間的設(shè)定我們有一定的約定,前面五個(gè)*號(hào)代表五個(gè)數(shù)字,數(shù)字的取值范圍和含義如下:
分鐘?。?-59)
小時(shí)?。?-23)
日期?。?-31)
月份 (1-12)
星期?。?-6)//0代表星期天
除了數(shù)字還有幾個(gè)個(gè)特殊的符號(hào)就是"*"、"/"和"-"、",",*代表所有的取值范圍內(nèi)的數(shù)字,"/"代表每的意思,"*/5"表示每5個(gè)單位,"-"代表從某個(gè)數(shù)字到某個(gè)數(shù)字,","分開幾個(gè)離散的數(shù)字。以下舉幾個(gè)例子說明問題:
每天早上6點(diǎn)
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意單純echo,從屏幕上看不到任何輸出,因?yàn)閏ron把任何輸出都email到root的信箱了。
每兩個(gè)小時(shí)
0 */2 * * * echo "Have a break now." >> /tmp/test.txt
晚上11點(diǎn)到早上8點(diǎn)之間每兩個(gè)小時(shí),早上八點(diǎn)
0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt
每個(gè)月的4號(hào)和每個(gè)禮拜的禮拜一到禮拜三的早上11點(diǎn)
0 11 4 * 1-3 command line
1月1日早上4點(diǎn)
0 4 1 1 * command line
每次編輯完某個(gè)用戶的cron設(shè)置后,cron自動(dòng)在/var/spool/cron下生成一個(gè)與此用戶同名的文件,此用戶的cron信息都記錄在這個(gè)文件中,這個(gè)文件是不可以直接編輯的,只可以用crontab -e 來編輯。cron啟動(dòng)后每過一份鐘讀一次這個(gè)文件,檢查是否要執(zhí)行里面的命令。因此此文件修改后不需要重新啟動(dòng)cron服務(wù)。
三、編輯/etc/crontab 文件配置cron
cron服務(wù)每分鐘不僅要讀一次/var/spool/cron內(nèi)的所有文件,還需要讀一次/etc/crontab,因此我們配置這個(gè)文件也能運(yùn)用 cron服務(wù)做一些事情。用crontab配置是針對(duì)某個(gè)用戶的,而編輯/etc/crontab是針對(duì)系統(tǒng)的任務(wù)。此文件的文件格式是:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root????? //如果出現(xiàn)錯(cuò)誤,或者有數(shù)據(jù)輸出,數(shù)據(jù)作為郵件發(fā)給這個(gè)帳號(hào)
HOME=/??? //使用者運(yùn)行的路徑,這里是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時(shí)執(zhí)行/etc/cron.hourly內(nèi)的腳本
02 4 * * * roo
關(guān)鍵詞標(biāo)簽:Linux crontab
相關(guān)閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP
人氣排行 Linux下獲取CPUID、硬盤序列號(hào)與MAC地址 dmidecode命令查看內(nèi)存型號(hào) linux tc實(shí)現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令 查看linux服務(wù)器硬盤IO讀寫負(fù)載