Linux中的守護程序cron程序

2022-11-18 13:12:02 字數 2871 閱讀 8455

439小遊戲

剛開始的時候對於後台程序,守護程序,以及cron程序的關係根本沒弄清楚,現在了解了。就像我前面的文字裡面寫的:

後台程序:執行時無須使用者輸入的程式。可以在諸如 unix/linux 之類的多工作業系統上執行多個後台程序,而使用者則與前台程序互動(例如,資料輸入)。

有些後台程序(例如守護程式)從來都不需要使用者輸入。其它一些程序只是在使用者忙於目前執行於前台的程式時才臨時處於後台。

守護程序是一種後台程序。cron程序是眾多守護程序中的一種,看看cron這個單詞在字典裡面的解釋:

cron

= chronograph,【unix】(時鐘)守護程式,(精密)計時程式

從字面意思就可以大概了解,它是一種和時間有關係的程式,簡單的說,cron守護程序執行預定的命令,他會在預定的時間執行預訂的命令或者指令碼。

好,知道了他是幹嘛的,現在就來了解他是怎麼工作的。

以一定的時間間隔執行作業需要使用 cron 進行管理,它由crond守護程序和一組表(描述執行哪些操作和採用什麼樣的頻率)組成。這個守護程序每分鐘喚醒一次,並通過檢查 crontab 判斷需要做什麼。使用者使用crontab命令管理 crontab。

crond守護程序常常是在系統啟動時由 init 程序啟動的。

注:上文摘自網路,實際上,在我的機器上,安裝的是vixie-cron,所以我的電腦上不是crond,而是vixie-cron

關於crontab這個表的內容,以及如何寫這個表,前面一篇文字已經有講過,不再贅述。有一點新的內容需要補充,時間後面的字段,也就是第六個字段:第 6 個字段包含前 5 個字段之後的所有內容,它是要傳遞給shell 的字串。

百分號(%)將轉換為空行,所以如果要使用 % 或其他任何特殊字元,就要在前面加上反斜線()。第乙個 % 之前的一行傳遞給 shell,這個 % 之後的所有行都作為標準輸入傳遞。

一般來說,只有root使用者才有許可權去執行cron程序,若管理員允許或者禁止其他使用者使用,則應編輯/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檔案,但在乙個較大的系統中,系統管理員一般會禁止這些檔案,而只在整個系統保留乙個這樣的檔案。系統管理員是通過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檔案,則第一次使用時可能應該手動建立乙個檔案,然後使用$ crontab 你的crontab檔名來提交你的crontab,之後就可以用crontab命令來修改,刪除,列出你的crontab的內容了。關於如何此命令如何使用也參見上一篇關於cron的部落格日誌。

注:crontab這個詞的意思,本身他是乙個表,裡面記錄預訂時間預定執行的命令或指令碼;第二,他也是個命令,使用者使用 crontab 命令管理 crontab這個表。

cron在執行的時候要檢視crontab來進行作業的排程。這裡上文有幾句話非常重要,解釋了我碰到過的問題:這個守護程序每分鐘喚醒一次,並通過檢查 crontab 判斷需要做什麼。

每分鐘檢查一次crontab,然後做一次執行命令或指令碼的安排。

使用者自己建立的crontab在哪兒呢?在這裡:/var/spool/cron/crontabs 。

其實,cron檢查的crontab不只包括使用者自己建立的crontab,還有系統的crontab,包括/etc/crontab和/etc/ 目錄中的檔案(/etc/ 下有可能會存在at排程的作業)。其中/etc/crontab有必要解釋一下,乙個典型的例子:

/etc/crontab shell=/bin/bash path=/sbin:/bin:/usr/sbin:

/usr/bin mailto=root home=/ # run-parts 01 * * * * root run-parts /etc/ 02 4 * * * root run-parts /etc/ 22 4 * * 0 root run-parts /etc/ 42 4 1 * * root run-parts /etc/

在這些系統 crontab 中,在第五個時間字段(星期)和命令之間增加了乙個字段。這個字段指定哪個使用者應該執行這個命令,一般情況下是根使用者。然後解釋下後面的命令:

在/etc/下會有這四個資料夾,他們下面分別放著一些檔案,用來指定每小時,每天,每個星期,每個月要執行的操作,命令run-parts的意思是執行下面目錄裡面的程式和指令碼,例如run-parts /etc/意思就是執行/etc/資料夾下的程式以及指令碼。

在這個示例中,真正的工作由 run-parts 命令執行,它執行 /etc/ 等目錄中的指令碼;/etc/crontab 僅僅控制執行作業的時間。注意,這裡的所有命令都作為根使用者執行。還要注意,crontab 可以包含 shell 變數賦值,這些賦值會在執行命令之前執行。

輸出您可能想知道對來自命令的輸出會如何處理。為使用 cron 而設計的大多數命令會使用 syslog 在日誌中記錄輸出(參見教程 lpi 102 考試準備:管理任務中的討論)。

但是,定向到 stdout 的輸出會通過電子郵件傳送給使用者。

對上面這段還不是很明白。但是我們可以在系統日誌/var/log/messages裡面看到你cron排程的命令或者指令碼有麼有執行。然後,目前測試,如果是gui的應用程式,似乎用cron不能良好的執行,所謂不能良好的執行,舉例來說:

不能使用***blaster****,因為他需要使用ncurses去繪製他的介面;在比如,使用mplayer去****,我下午的測試,只能**出**,不能顯示出**。

在gentoo裡面用eix -s cron看了下,cron這種程式還是有很多種的,不同的人開發的不同特色的cron程式。比如dcron,fcron等等,詳細就自己去看下description了。

對於cron的學習,可能這也算是告一段落了,總結一下,以示慶祝!

TDD中的HARQ程序

同fdd中一樣,tdd中的下行harq程序也是自適應非同步的。由於在tdd中,上下行的子幀數目是不連續的,也並非一一對應的關係,下行資料的ack nack通過bundling或multiplexing的方式進行,如前文所述。在tdd中,ue在子幀n接收到enodeb傳送的下行資料後,在子幀n 4的位...

Linux系統中系統路徑的理解

1 linux檔案系統是從 開始的 在linux作業系統的檔案管理中,命令列模式 在控制台或終端下 的檔案或目錄管理,要涉及路徑這一概念,這是linux命令列操作的最基礎的基礎。如果我們了解了路徑的概念,就可以隨心所欲的進入任何目錄,進行我們想的工作。linux檔案系統,是乙個呈樹形結構,是從 做為...

c 中很可能考的程序 1

1冒泡法對10個數進行排序 include define n 10 void main printf n排序後的資料為 n for i 0 i2.輸入兩個正整數,m和n,求其最大公約數和最小公倍數。include void main int hcf int u,int v while r u v 0...