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