時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
看了兩天的,終于覺(jué)得把這個(gè)Cron看得稍微明白點(diǎn)了,總結(jié)一下。
剛開(kāi)始的時(shí)候?qū)τ诤笈_(tái)進(jìn)程,守護(hù)進(jìn)程,以及cron進(jìn)程的關(guān)系根本沒(méi)弄清楚,現(xiàn)在了解了。就像我前面的文字里面寫(xiě)的:
后臺(tái)進(jìn)程:運(yùn)行時(shí)無(wú)須用戶(hù)輸入的程序??梢栽谥T如 UNIX/Linux 之類(lèi)的多任務(wù)操作系統(tǒng)上運(yùn)行多個(gè)后臺(tái)進(jìn)程,而用戶(hù)則與前臺(tái)進(jìn)程交互(例如,數(shù)據(jù)輸入)。有些后臺(tái)進(jìn)程(例如守護(hù)程序)從來(lái)都不需要用戶(hù)輸入。其它一些進(jìn)程只是在用戶(hù)忙于目前運(yùn)行于前臺(tái)的程序時(shí)才臨時(shí)處于后臺(tái)。
守護(hù)進(jìn)程是一種后臺(tái)進(jìn)程。Cron進(jìn)程是眾多守護(hù)進(jìn)程中的一種,看看Cron這個(gè)單詞在字典里面的解釋?zhuān)?/p>
cron
= chronograph,【unix】(時(shí)鐘)守護(hù)程序,(精密)計(jì)時(shí)程序
從字面意思就可以大概了解,它是一種和時(shí)間有關(guān)系的程序,簡(jiǎn)單的說(shuō),cron守護(hù)進(jìn)程執(zhí)行預(yù)定的命令,他會(huì)在預(yù)定的時(shí)間執(zhí)行預(yù)訂的命令或者腳本。
好,知道了他是干嘛的,現(xiàn)在就來(lái)了解他是怎么工作的。
"以一定的時(shí)間間隔運(yùn)行作業(yè)需要使用 cron 進(jìn)行管理,它由crond守護(hù)進(jìn)程和一組表(描述執(zhí)行哪些操作和采用什么樣的頻率)組成。這個(gè)守護(hù)進(jìn)程每分鐘喚醒一次,并通過(guò)檢查 crontab 判斷需要做什么。用戶(hù)使用crontab命令管理 crontab。crond守護(hù)進(jìn)程常常是在系統(tǒng)啟動(dòng)時(shí)由 init 進(jìn)程啟動(dòng)的。"
注:上文摘自網(wǎng)絡(luò),實(shí)際上,在我的機(jī)器上,安裝的是Vixie-Cron,所以我的電腦上不是crond,而是Vixie-Cron
關(guān)于crontab這個(gè)表的內(nèi)容,以及如何寫(xiě)這個(gè)表,前面一篇文字已經(jīng)有講過(guò),不再贅述。有一點(diǎn)新的內(nèi)容需要補(bǔ)充,時(shí)間后面的字段,也就是第六個(gè)字段:第 6 個(gè)字段包含前 5 個(gè)字段之后的所有內(nèi)容,它是要傳遞給shell 的字符串。百分號(hào)(%)將轉(zhuǎn)換為空行,所以如果要使用 % 或其他任何特殊字符,就要在前面加上反斜線(\)。第一個(gè) % 之前的一行傳遞給 shell,這個(gè) % 之后的所有行都作為標(biāo)準(zhǔn)輸入傳遞。
一般來(lái)說(shuō),只有root用戶(hù)才有權(quán)限去運(yùn)行cron進(jìn)程,若管理員允許或者禁止其他用戶(hù)使用,則應(yīng)編輯/etc/下面的c r o n . d e n y和c r o n . a l l o w這兩個(gè)文件來(lái)禁止或允許用戶(hù)擁有自己的c r o n t a b文件。
每一個(gè)用戶(hù)都可以有自己的c r o n t a b文件,但在一個(gè)較大的系統(tǒng)中,系統(tǒng)管理員一般會(huì)禁止這些文件,而只在整個(gè)系統(tǒng)保留一個(gè)這樣的文件。系統(tǒng)管理員是通過(guò)c r o n . d e n y和c r o n . a l l o w這兩個(gè)文件來(lái)禁止或允許用戶(hù)擁有自己的c r o n t a b文件。
若沒(méi)有自己的crontab文件,則第一次使用時(shí)可能應(yīng)該手動(dòng)創(chuàng)建一個(gè)文件,然后使用$ crontab <你的crontab文件名> 來(lái)提交你的crontab,之后就可以用crontab命令來(lái)修改,刪除,列出你的crontab的內(nèi)容了。關(guān)于如何此命令如何使用也參見(jiàn)上一篇關(guān)于cron的博客日志。
注:crontab這個(gè)詞的意思,本身他是一個(gè)表,里面記錄預(yù)訂時(shí)間預(yù)定執(zhí)行的命令或腳本;第二,他也是個(gè)命令,用戶(hù)使用 crontab 命令管理 crontab這個(gè)表。
cron在運(yùn)行的時(shí)候要查看crontab來(lái)進(jìn)行作業(yè)的調(diào)度。這里上文有幾句話非常重要,解釋了我碰到過(guò)的問(wèn)題:這個(gè)守護(hù)進(jìn)程每分鐘喚醒一次,并通過(guò)檢查 crontab 判斷需要做什么。每分鐘檢查一次crontab,然后做一次運(yùn)行命令或腳本的安排。
用戶(hù)自己創(chuàng)建的crontab在哪兒呢?在這里:/var/spool/cron/crontabs 。其實(shí),cron檢查的crontab不只包括用戶(hù)自己創(chuàng)建的crontab,還有系統(tǒng)的crontab,包括/etc/crontab和/etc/cron.d 目錄中的文件(/etc/cron.d 下有可能會(huì)存在at調(diào)度的作業(yè))。其中/etc/crontab有必要解釋一下,一個(gè)典型的例子:
/etc/crontab
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
在這些系統(tǒng) crontab 中,在第五個(gè)時(shí)間字段(星期)和命令之間增加了一個(gè)字段。這個(gè)字段指定哪個(gè)用戶(hù)應(yīng)該運(yùn)行這個(gè)命令,一般情況下是根用戶(hù)。然后解釋下后面的命令:在/etc/下會(huì)有cron.hourly,cron.daily,cron.weekly,cron.monthly這四個(gè)文件夾,他們下面分別放著一些文件,用來(lái)指定每小時(shí),每天,每個(gè)星期,每個(gè)月要執(zhí)行的操作,命令run-parts的意思是執(zhí)行下面目錄里面的程序和腳本,例如run-parts /etc/cron.hourly意思就是執(zhí)行/etc/cron.hourly文件夾下的程序以及腳本。
在這個(gè)示例中,真正的工作由 run-parts 命令執(zhí)行,它運(yùn)行 /etc/cron.hourly、/etc/cron.daily 等目錄中的腳本;/etc/crontab 僅僅控制執(zhí)行作業(yè)的時(shí)間。注意,這里的所有命令都作為根用戶(hù)運(yùn)行。還要注意,crontab 可以包含 shell 變量賦值,這些賦值會(huì)在運(yùn)行命令之前執(zhí)行。
輸出
您可能想知道對(duì)來(lái)自命令的輸出會(huì)如何處理。為使用 cron 而設(shè)計(jì)的大多數(shù)命令會(huì)使用 syslog 在日志中記錄輸出(參見(jiàn)教程 "LPI 102 考試準(zhǔn)備:管理任務(wù)" 中的討論)。但是,定向到 stdout 的輸出會(huì)通過(guò)電子郵件發(fā)送給用戶(hù)。
對(duì)上面這段還不是很明白。但是我們可以在系統(tǒng)日志/var/log/messages里面看到你cron調(diào)度的命令或者腳本有么有執(zhí)行。然后,目前測(cè)試,如果是GUI的應(yīng)用程序,似乎用cron不能良好的運(yùn)行,所謂不能良好的運(yùn)行,舉例來(lái)說(shuō):不能使用mp3blaster播放音樂(lè),因?yàn)樗枰褂胣curses去繪制他的界面;在比如,使用mplayer去播放視頻,我下午的測(cè)試,只能播放出音樂(lè),不能顯示出視頻。
在gentoo里面用eix -s cron看了下,cron這種程序還是有很多種的,不同的人開(kāi)發(fā)的不同特色的cron程序。比如dcron,fcron等等,詳細(xì)就自己去看下description了。
對(duì)于cron的學(xué)習(xí),可能這也算是告一段落了,總結(jié)一下,以示慶祝
關(guān)鍵詞標(biāo)簽:Cron進(jìn)程
相關(guān)閱讀
熱門(mén)文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶(hù)端配置 Linux操作系統(tǒng)修改IP
人氣排行 Linux下獲取CPUID、硬盤(pán)序列號(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ī)、重啟、注銷(xiāo) 命令 查看linux服務(wù)器硬盤(pán)IO讀寫(xiě)負(fù)載