當內核初始化后,就會啟動第一個進程 init,init進程會進行一系列的系統初始化工作,init是根據什么來進行初始化的?
init 會讀取/etc/inittab文件(針對CentOS 5 系列),執行里面的內容來進行初始化工作,這個文件是一定的格式。
獲取inittab文件的幫助,輸入 man inittab 命令
過濾掉空白行和以#號開始的行,內容如下:
[root@server1 ~]# egrep -v '^$|^#' /etc/inittab id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 ca::ctrlaltdel:/sbin/shutdown -t3 -r now pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 x:5:respawn:/etc/X11/prefdm -nodaemon
其格式可以歸納為如下:
id:runlevels:action:process
id 用來定義在inittab文件唯一的條目編號,長度為 1-4個字符
runlevels 列出來運行的級別 為空則代表所有級別
action 要執行的動作
process 要執行的程序
id:3:initdefault:
id 就使用id本身來定義
3 就是列出的運行級別
initdefault
這個動作就是設定默認的運行級別,如果前面runlevels不指定運行級別,那么會在啟動時在終端詢問,這一行不需要process這一段
si::sysinit:/etc/rc.d/rc.sysinit
id 是 si 只是用來標識
runlevels 為空則代表的是 所有的運行級別
sysinit 是指在系統啟動時執行后面的process(也就是/etc/rc.d/rc.sysinit)
/etc/rc.d/rc.sysinit 這是一個系統初始化腳本,這個腳本里面初始化很多的
該腳本的作用:
激活selinux和udev
根據/etc/sysctl.conf文件設置內核參數
設置系統時鐘
裝載鍵映射
啟用交換分區
設置主機名
根文件系統檢測并重新掛載其為讀寫;
激活RAID和LVM;
檢查和掛載其它文件系統;/etc/fstab中定義;
清理操作
l0:0:wait:/etc/rc.d/rc 0
l0 就是標識這是0級別
0 就是動作是在0級別下發生
wait 是指在切換至0級別時執行后面的process(/etc/rc.d/rc 0),并且init進程會等待直到這些進程終止
/etc/rc.d/rc 0 這是一個腳本 后面的0 是傳遞進去的參數 ,傳遞進去0就代表著要執行/etc/rc.d/rc0.d/
下面所有的腳本首先執行K開頭的腳本,然后執行S開頭的腳本
這一行的意思就是當運行在0級別,就會執行/etc/rc.d/rc0.d/ 所有的腳本
K開頭的腳本都是需要停止的
S開頭的腳本都是需要啟動的
后面跟的2位數數字是啟動或者停止順序
這里面大多數是K開頭,是因為0級別本身就是關機的,所以都是要停止的,也有2個S開頭 S00killall 這個腳本kill所有的沒有關閉的進程,S01halt 是 用來關機的 所有才有此2個S開頭的腳本
l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6
這幾個跟上面如出一轍
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
ca id名稱
runlevel留空 代表所有級別
ctrlaltdel 代表 ctrl+alt+delete
/sbin/shutdown -t3 -r now 執行重啟命令
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
pf id名稱
runlevel留空 代表所有級別
powerfail 當突然斷電時執行
/sbin/shutdown -f -h +2 “Power Failure; System Shutting Down” 服務器在UPS前提下,當突然斷電,服務器就會倒計時2分鐘,進行關機
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
pr id名稱
12345 也就是在12345級別下才會執行后面的動作
powerokwait 也就是上面的倒計時未結束(在2分鐘之內)再來電,那么取消關機
/sbin/shutdown -c “Power Restored; Shutdown Cancelled” 取消關機
1:2345:respawn:/sbin/mingetty tty1
1 id名稱
2345 也就是在2345級別下才會執行后面的動作
respawn 意思就是當后面的要執行的程序(/sbin/mingetty tty1) 終止了,init進程會自動重啟該進程
/sbin/mingetty tty1 執行的程序
這一行大體意思就是 當虛擬終端進程結束了,init會自動再次打開虛擬終端,就是我們用SSH連接到服務器,退出時系統會打開一個登錄的界面等待輸入
2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6
跟上面一樣,系統優化的時候可以適量減少一些虛擬終端的數量,可以減少系統資源占用。
x:5:respawn:/etc/X11/prefdm -nodaemon
x id名稱
5 后面的動作只是在5級別下運行
respawn 會自動重啟后面的程序
/etc/X11/prefdm -nodaemon 這個是圖形界面
這一行大體意思是 當圖形化界面進程結束,會自動再打開圖形化程序
文章鏈接:http://www.linux178.com/linux/inittab.html
原創文章,作者:追馬,如若轉載,請注明出處:http://www.www58058.com/818