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