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