Linux 系統(tǒng)運(yùn)行級別
Linux 使用的是基于運(yùn)行級(run-levels
)概念的稱為 SysVinit
的專用啟動工具眼俊。 它在不同的系統(tǒng)上可能是完全不一樣的, 所以不能認(rèn)為一個腳本在某個 Linux 發(fā)行版上工作正常唯竹。
SysVinit
以運(yùn)行級的模式來工作,一般有 7 (從 0 到 6)個運(yùn)行級 (實際上可以有更多的運(yùn)行級,但都是用于特殊情況而且一般使用不到衣屏。 參見 init(8)以獲得更多信息)宵蕉,每個運(yùn)行級對應(yīng)于一套設(shè)定好的任務(wù)酝静, 當(dāng)啟動一個運(yùn)行級的時候, 計算機(jī)就需要執(zhí)行相應(yīng)的任務(wù)羡玛。
默認(rèn)的運(yùn)行級是 3别智,下面是對不同運(yùn)行級的描述:
0: 關(guān)閉計算機(jī)
1: 單用戶模式
2: 無網(wǎng)絡(luò)多用戶模式
3: 有網(wǎng)絡(luò)多用戶模式
4: 保留作自定義,否則同運(yùn)行級 3
5: 同運(yùn)行級 4稼稿,一般用于圖形界面(GUI)登錄(如 X的 xdm 或 KDE的 kdm)
6: 重啟動計算機(jī)
可以使用 runlevel
命令查看:
$ runlevel
N 3
也可以在 /etc/inittab
文件中看到以下:
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
也就是說我們系統(tǒng)的運(yùn)行級別目前是3薄榛,那么需要看的就是 /etc/rc3.d
下的內(nèi)容讳窟,其實里面都是軟連接,所有的軟鏈指向 /etc/init.d/
中的腳本文件敞恋,命名規(guī)范如下:
[K|S][number][service name] --> ../init.d/servicename
- S 表示系統(tǒng)啟動時需要啟動的腳本
- K 表示系統(tǒng)關(guān)閉時要關(guān)閉的腳本
- [number] 表示的是該腳本的運(yùn)行優(yōu)先級丽啡,number 越小,腳本的運(yùn)行優(yōu)先級就越高
- [service name] 表示的是服務(wù)的名稱硬猫。
因此我們?nèi)绻枰x一個服務(wù)啟動的優(yōu)先級(順序)碌上,則需指定腳本的 number 即可。
Linux 開機(jī)順序
- 加載內(nèi)核
- 啟動 init(/etc/inittab)
內(nèi)核啟動的第一個用戶級別的進(jìn)程浦徊,其 pid 始終為 1馏予,其它的開機(jī)啟動腳本都是通過是通過這個進(jìn)程來啟動的。
- 執(zhí)行
/etc/rc.d/rc.sysinit
這是 init 執(zhí)行的第一個腳本盔性,這個腳本主要工作是進(jìn)行系統(tǒng)的初始化霞丧,如:設(shè)置系統(tǒng)字體、啟動 swapping冕香、設(shè)置主機(jī)名蛹尝、裝載聲卡模塊等。
- 執(zhí)行
/etc/rc.d/rc*.d
(rc0.d悉尾、rc1.d突那、rc2.d…rc6.d)
這一步會運(yùn)行各個運(yùn)行級別的腳本。這些運(yùn)行腳本是指通過 chkconfig 命令配置的開機(jī)啟動各個級別所要要執(zhí)行的程序构眯。
- 執(zhí)行
/etc/rc.d/rc.local
(就是 /etc/rc.local)
在各級別服務(wù)啟動后愕难,會執(zhí)行該文件,如果不需要把所要執(zhí)行的腳本配置為系統(tǒng)服務(wù)惫霸,也可以把所需執(zhí)行的命令寫到這個文件中猫缭,相比來說更為簡單方便。
-
/sbin/mingetty
壹店,等待用戶登錄
自啟動腳本實踐
- 開機(jī)以 root 權(quán)限執(zhí)行腳本猜丹,修改
/etc/rc.d/rc.local
文件。 - 用戶登錄時執(zhí)行腳本硅卢,如設(shè)置一些環(huán)境變量射窒,修改
/etc/profile
文件。 - 特定用戶登錄時執(zhí)行特定腳本将塑,如設(shè)置該用戶特定的環(huán)境變量脉顿,修改
~/.bash_profile
文件。
文件 | 說明 |
---|---|
/etc/profile |
此文件為系統(tǒng)的每個用戶設(shè)置環(huán)境信息抬旺,當(dāng)用戶第一次登錄時弊予,該文件被執(zhí)行祥楣。并從 /etc/profile.d 目錄的配置文件中搜集 shell 的設(shè)置开财。 |
/etc/bashrc |
為每一個運(yùn)行bash shell的用戶執(zhí)行此文件。當(dāng)bash shell被打開時责鳍,該文件被讀取碾褂。 |
~/.bash_profile |
用戶專用于自己使用的 shell 信息,當(dāng)用戶登錄時历葛,該文件僅僅執(zhí)行一次正塌!默認(rèn)情況下,他設(shè)置一些環(huán)境變量恤溶,執(zhí)行用戶的 .bashrc 文件乓诽。 |
~/.bashrc |
該文件包含專用于你的 bash shell 的 bash 信息,當(dāng)?shù)卿洉r以及每次打開新的 shell 時咒程,該文件被讀取鸠天。 |
~/.profile |
在 Debian 中使用 .profile 文件代替 .bash_profile 文件 .profile (由Bourne Shell和Korn Shell使用)和 .login (由C Shell使用)兩個文件是 .bash_profile 的同義詞,目的是為了兼容其它 Shell帐姻。 |
~/.bash_logout |
當(dāng)每次退出系統(tǒng)(退出bash shell)時稠集,執(zhí)行該文件。 |