Sys V init啟動(dòng)方式
Sys V init啟動(dòng)方式
Sys V init 啟動(dòng)方式
Linux 使用的是基于運(yùn)行級(jí)(run-levels) 概念的稱為 SysVinit 的專用啟動(dòng)工具。 它在不同的系統(tǒng)上可能是完全不一樣的, 所以不能認(rèn)為一個(gè)腳本在某個(gè) Linux 發(fā)行版上工作正常。
System V init的主要思想是定義了不同的"運(yùn)行級(jí)別(runlevel)"。通過(guò)配置文件/etc/inittab定義了系統(tǒng)引導(dǎo)時(shí)的運(yùn)行級(jí)別, 進(jìn)入或者切換到一個(gè)運(yùn)行級(jí)別時(shí)做什么。每個(gè)運(yùn)行級(jí)別對(duì)應(yīng)于一個(gè)子目錄/etc/rc.d/rcX.d。
在etc/inittab中action為sysinit的一行會(huì)給初始化腳本傳入一個(gè)參數(shù),一般為一數(shù)字,例如:
si::sysinit:/etc/rc.d/init.d/rc 5
rc腳本會(huì)合成 /etc/rc.d / rc5.d目錄,其中5是傳入的參數(shù),并執(zhí)行其中的腳本來(lái)開(kāi)關(guān)服務(wù)。
SysVinit(從現(xiàn)在開(kāi)始我們稱之為"init")以運(yùn)行級(jí)的模式來(lái)工作,一般有 7 (從 0 到 6)個(gè)運(yùn)行級(jí) (實(shí)際上可以有更多的運(yùn)行級(jí),但都是用于特殊情況而且一般使用不到。 參見(jiàn) init(8)以獲得更多信息),每個(gè)運(yùn)行級(jí)對(duì)應(yīng)于一套設(shè)定好的任務(wù), 當(dāng)啟動(dòng)一個(gè)運(yùn)行級(jí)的時(shí)候, 計(jì)算機(jī)就需要執(zhí)行相應(yīng)的任務(wù)。 默認(rèn)的運(yùn)行級(jí)是 3,下面是對(duì)不同運(yùn)行級(jí)的描述:
0: 關(guān)閉計(jì)算機(jī)
1: 單用戶模式
2: 無(wú)網(wǎng)絡(luò)多用戶模式
3: 有網(wǎng)絡(luò)多用戶模式
4: 保留作自定義,否則同運(yùn)行級(jí) 3
5: 同運(yùn)行級(jí) 4,一般用于圖形界面(GUI)登錄(如 X的 xdm 或 KDE的 kdm)
6: 重啟動(dòng)計(jì)算機(jī)
用來(lái)改變運(yùn)行級(jí)別的命令是init
在 /etc/rc.d 目錄下有很多類似 rc?.d (這里 ? 是運(yùn)行級(jí)別的數(shù)值) 和 rcsysinit.d 的目錄, 里面都包含許多符號(hào)鏈接,其中一些以 K 字母開(kāi)頭,另外一些以 S 字母開(kāi)頭, 這些鏈接名在首字母后面都跟著兩個(gè)數(shù)字。 這個(gè) K 的含義是停止 (kill) 一個(gè)服務(wù), S 的含義是啟動(dòng)一個(gè)服務(wù)。而數(shù)字則確定這些腳本的啟動(dòng)順序,從 00 到 99(數(shù)字越小執(zhí)行的越早)。 當(dāng) init 轉(zhuǎn)換到其它運(yùn)行級(jí)時(shí), 一些相應(yīng)的服務(wù)會(huì)停止, 而另一些服務(wù)則會(huì)啟動(dòng)。
真正的腳本在 /etc/rc.d/init.d 目錄下, 它們完成實(shí)際工作, 符號(hào)鏈接都是指向它們的。 停止腳本的鏈接和啟動(dòng)腳本的鏈接都指向 /etc/rc.d/init.d 目錄下的同一個(gè)腳本。 這是因?yàn)檎{(diào)用這些腳本時(shí)可以使用不同的參數(shù),例如 start, stop, restart, reload, 和 status。 當(dāng)調(diào)用 K 鏈接時(shí),相應(yīng)的腳本用 stop參數(shù)運(yùn)行;當(dāng)調(diào)用 S 鏈接時(shí),相應(yīng)的腳本用start 參數(shù)運(yùn)行。
上面的說(shuō)明有一個(gè)例外,在 rc0.d 和 rc6.d 目錄下以 S 開(kāi)頭的鏈接不會(huì)啟動(dòng)任何東西, 而是用stop參數(shù)調(diào)用, 來(lái)停止某些服務(wù)。 這背后的邏輯是, 當(dāng)用戶要重啟或關(guān)閉系統(tǒng)的時(shí)候, 不會(huì)要啟動(dòng)什么服務(wù), 只會(huì)要系統(tǒng)停止。
以下是腳本參數(shù)的描述:
start
啟動(dòng)服務(wù)。
stop
停止服務(wù)。
restart
關(guān)閉服務(wù),然后再啟動(dòng)。
reload
該服務(wù)的配置已更新。如果修改了某個(gè)服務(wù)的配置文件,又不必重啟這個(gè)服務(wù)的時(shí)候, 可以使用這個(gè)參數(shù)
status
顯示服務(wù)的狀態(tài),如果服務(wù)正在運(yùn)行,會(huì)顯示該服務(wù)進(jìn)程的 PID 。