linux操作系統(tǒng)自從開始啟動至啟動完畢需要經(jīng)歷幾個不同的階段,這幾個階段就叫做runlevel,同樣,當linux操作系統(tǒng)關(guān)閉時也要經(jīng)歷另外幾個不同的runlevel,下面我們就準備詳細介紹一下runlevel,并向您展示一些小技巧來讓您的linux系統(tǒng)避免不必要的重啟動。
runlevel可以認為是系統(tǒng)狀態(tài),形象一點,您可以認為runlevel有點象微軟的windows操作系統(tǒng)中的Normal,safemode,和Command prompt only。進入每個runlevel都需要啟動或關(guān)閉相應(yīng)的一系列服務(wù)(services),這些服務(wù)(services)以初始化腳本的方式放置于目錄/etc/rc.d/rc?.d/或者/etc/rc?.d下面(?代表runlevel的對應(yīng)序號)。
在大多數(shù)的linux發(fā)行版本中,通常有8個runlevel
Runlevel System State
0 Halt the system
1 Single user mode
2 Basic multi user mode
3 Multi user mode
5 Multi user mode with GUI
6 Reboot the system
S, s Single user mode
多數(shù)的桌面的linux系統(tǒng)缺省的runlevel是5,用戶登陸時是圖形界面,而多數(shù)的服務(wù)器版本的linux系統(tǒng)缺省的runlevel是3,用戶登陸時是字符界面,runlevel 1和2除了調(diào)試之外很少使用,runlevel s和S并不是直接給用戶使用,而是用來為Single user mode作準備。
linux的運行模式比起windows的啟動模式的優(yōu)勢在于:你可以在系統(tǒng)空閑時使用.init工具切換你現(xiàn)在使用的runlevel,另外,當你關(guān)閉或者啟動linux系統(tǒng)時你已經(jīng)不知不覺中切換你的runlevel,系統(tǒng)關(guān)機進程需要調(diào)用runlevel(0或6)來關(guān)閉所有正在運行中的進程。
顯示當前運行模式
剛?cè)腴T時,你或許對先前和目前正在使用中的運行模式很好奇,runlevel命令可以用來顯示這些信息:
$ /sbin/runlevel
3 5
runlevel命令的輸出結(jié)果表明最初的運行模式是3,而現(xiàn)在的運行模式是5。
切換運行模式
切換運行模式使用telinit命令(root用戶):
$ /sbin/telinit
通常,切換運行模式的目的是重啟某些應(yīng)用進程,比如XFree86,將運行模式從5切換到3將終止XFree86以及與之相關(guān)的所有進程,然后再把運行模式切換到5,XFree86就可以很干凈的啟動。在做這些工作之前,請確保所有在XFree86下的工作都已經(jīng)保存,用root用戶:
$ /sbin/telinit 3
$ /sbin/telinit 5
在鍵入命令之后,你的屏幕可能會顯示一些服務(wù)啟動或者停止的信息。
在運行模式中加入啟動服務(wù)
要在某個運行模式中加入一個啟動服務(wù),首先要新建該服務(wù)啟動腳本,然后把它放置于/etc/rc.d/init.d或者/etc/init.d/(根據(jù)你的linux版本有所不同),要將該啟動腳本與運行模式關(guān)聯(lián)起來,你需要這個運行模式的目錄下建立一個與/etc/rc.d/init.d/下啟動腳本的symbolic link,文件名的前綴通常為SXX,XX為數(shù)字,這個數(shù)字是用來控制該運行模式下服務(wù)的啟動順序。腳本的執(zhí)行順序是按照數(shù)字大小升序執(zhí)行,就是數(shù)字越小越先執(zhí)行,下面就是一個在運行模式中加入啟動服務(wù)具體的例子:
$ cp myservice /etc/rc.d/init.d/
$ ln -s /etc/rc.d/init.d/myservice /etc/rc3.d/S99myservice
這樣,下次以runlevel 3啟動時,myservice就會自動啟動。
以某個runlevel啟動
你可以自己制定啟動時所進入的runlevel,如果你的系統(tǒng)使用的是lilo,在啟動命令中將相應(yīng)的部分為:
LILO: linux 5
如果你使用的是GRUB,在啟動時你可以按住e鍵進入設(shè)置模式,相應(yīng)的位置顯示為:
kernel /vmlinuz ro root=/dev/hda1 5