Linux系統(tǒng)服務(wù)之init
Init進(jìn)程是所有進(jìn)程的發(fā)起者和控制者。因?yàn)樵谌魏位赨nix的系統(tǒng)(比如linux)中,它都是***個(gè)運(yùn)行的進(jìn)程,所以init進(jìn)程的編號(hào)(Process ID,PID)永遠(yuǎn)是1。如果init出現(xiàn)了問(wèn)題,系統(tǒng)的其余部分也就隨之而垮掉了。
init進(jìn)程有兩個(gè)作用。***個(gè)作用是扮演終結(jié)父進(jìn)程的角色。因?yàn)閕nit進(jìn)程永遠(yuǎn)不會(huì)被終止,所以系統(tǒng)總是可以確信它的存在,并在必要的時(shí)候以它為參照。如果某個(gè)進(jìn)程在它衍生出來(lái)的全部子進(jìn)程結(jié)束之前被終止,就會(huì)出現(xiàn)必須以init為參照的情況。此時(shí)那些失去了父進(jìn)程的子進(jìn)程就都會(huì)以init作為它們的父進(jìn)程??焖賵?zhí)行一下ps -af 命令,可以列出許多父進(jìn)程ID(Parent Process ID,PPID)為1的進(jìn)程來(lái)。
init的第二個(gè)角色是在進(jìn)入某個(gè)特定的運(yùn)行級(jí)別(Runlevel)時(shí)運(yùn)行相應(yīng)的程序,以此對(duì)各種運(yùn)行級(jí)別進(jìn)行管理。它的這個(gè)作用是由/etc/inittab文件定義的。
1. /etc/inittab文件
/etc/inittab文件中包括了所有init啟動(dòng)運(yùn)行級(jí)別所必須的信息。這個(gè)文件中的每一行語(yǔ)句的格式如下所示:
id : runlevels: action : process
注意:以#開(kāi)始的語(yǔ)句是注釋語(yǔ)句。看看你自己的/etc/inittab文件就可以發(fā)現(xiàn)其中充斥了大量的注釋語(yǔ)句。如果確實(shí)需要對(duì)/etc/inittab文件進(jìn)行什么改動(dòng)(一般不會(huì)出現(xiàn)這種情況的),記住加上一些注釋語(yǔ)句,解釋為什么要做那些修改。
2. Telinit命令
通知init在什么時(shí)候切換系統(tǒng)運(yùn)行級(jí)別的神秘力量實(shí)際上就是Telinit命令。這個(gè)命令有兩個(gè)命令行參數(shù):一個(gè)參數(shù)用來(lái)通知init準(zhǔn)備切換過(guò)去的運(yùn)行級(jí)別;另外一個(gè)是-tsec,其中的sec是在通知init之前需要等待的、以秒計(jì)算的時(shí)間。
注意:init是否真的切換運(yùn)行級(jí)別是由它自己決定的。很明顯,它經(jīng)常切換,否則這個(gè)命令就不會(huì)那么有用了。在大多數(shù)Unix操作系統(tǒng)的具體實(shí)現(xiàn)(包括linux)中,Telinit命令實(shí)際上只是一個(gè)對(duì)init程序的符號(hào)鏈接?;诖耍S多人更喜歡使用init直接切換到他們想去的運(yùn)行級(jí)別而不是使用Telinit。就個(gè)人而言,我發(fā)現(xiàn)使用Telinit切換運(yùn)行級(jí)別更便于理解和記憶。
上文講的是linux系統(tǒng)服務(wù)中的init,希望對(duì)大家有所幫助
【編輯推薦】
- 使用Yum自動(dòng)更新Linux系統(tǒng)服務(wù)器的方法
- Linux系統(tǒng)服務(wù):Apache與Tomcat整合技巧
- 如何來(lái)量身定制安全的Linux系統(tǒng)服務(wù)平臺(tái)
- Fedora Core Linux系統(tǒng)服務(wù)器的調(diào)試手記
- 8.2.2 initrd.img映像文件
- 4.2.4 init_post函數(shù)
- 巧用Linux init控制六種登陸模式