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