/etc/inittab檔案描述了哪些進程開始啟動並正常運行。inittab為linux初始設定檔案系統時init初始化程式用到的設定檔。這個檔案負責設定init初始化程式初始化指令碼在哪裡;每個運行級初始化時啟動並執行命令; 開機、關機、重啟對應的命令;各運行級登陸時所啟動並執行命令。
inittab檔案中的條目的格式如下:
label:runlevels:action:process 下面分別介紹各個欄位
1.label
label 是一個獨特的序列,確定了一個條目1 - 4字元,一些系統只支援2個字元的標籤。對於getty或mingetty等其他login程式項,要求label與tty的編號相同,否則getty程式將不能正常工作。
常用標籤有:
id 用來定義預設的init啟動並執行層級
si 是系統初始化的進程
ln 其中的n從1~6,指明該進程可以使用的runlevel的層級
ud 是升級進程
ca 指明當按下Ctrl+Alt+Del時啟動並執行進程
pf 指當UPS表明斷電時啟動並執行進程
pr 是在系統真正關閉之前,UPS發出電源恢複的訊號時需要啟動並執行進程
x 是將系統轉入X終端時需要啟動並執行進程
2.runlevels
runlevels 列出了運行級,指定應該採取的動作。可以指定多個runlevel層級,也可以不為runlevel欄位指定特定的值。
runlevel 0是讓init關閉所有進程並終止系統。
runlevel 1是用來將系統轉到單一使用者模式,單一使用者模式只能有系統管理員進入,在該模式下處理那些在有登入使用者的情況下不能變更的檔案,改runlevel的編號1也可以用S代替。
runlevel 2是允許系統進入多使用者的模式,但並不支援檔案分享權限設定,這種模式很少應用。
runlevel 3是最常用的運行模式,主要用來提供真正的多使用者模式,也是多數伺服器的預設模式。
runlevel 4一般不被系統使用,使用者可以設計自己的系統狀態並將其應用到runlevel 4階段,儘管很少使用,但使用該系統可以實現一些特定的登入請求。
runlevel 5是將系統初始化為專用的X Window終端。對功能強大的Linux系統來說,這並不是好的選擇,但使用者如果需要這樣,也可以通過在runlevel啟動來實現該方案。
runlevel 6是關閉所有啟動並執行進程並重新啟動系統。
debian6以後預設沒有運行/etc/inittab 檔案 預設層級為2-5歸為一類
3.action
action 欄位定義了該進程應該運行在何種狀態下,描述其後的process的運行方式的。:
respawn 不管何時終止都重新啟動進程
wait 運行進程等待輸入運行模式 這個過程將會開始一次運行層級時指定輸入和init將等待其終止
once 每一個runlevel層級運行一次 這個過程將執行一次當指定輸入runlevel
boot 在系統啟動時運行,忽略runlevel
bootwait 在系統啟動時運行,init等待進程完成。忽略runlevel
ctrlaltdel 當Ctrl+Alt+Del三個鍵同步選取時運行,把SIGINT訊號發送給init。忽略 runlevel
initdefault 不要執行這個進程,它用於設定預設runlevel
kbrequest 當init從鍵盤中收到訊號時運行。這裡要求鍵盤組合符合KeyBoardSigra
off 禁止進入,因此該進程不運行
once 每一個runlevel層級運行一次
ondemand 當系統指定特定的運行層級A、B、C時運行
powerfail 當init收到SIGPWR訊號時運行
powerokwait 當收到SIGPWD訊號且/etc/檔案中的電源狀態包含OK時運行
powerwait 當收到SIGPWD訊號,並且init等待進程結束時運行
sysinit 在運行boot或bootwait進程之前運行
4.process
process欄位包含init執行的進程,該進程採用的格式與在命令列下運行該進程的格式一樣,因此process欄位都以該進程的名字開頭,緊跟著是運行時要傳遞給該進程的參數。
# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
代碼如下:
# The default runlevel.
id:2:initdefault: #表示當前預設運行層級為2
代碼如下:
# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS #系統初始化的進程
代碼如下:
# What to do in single-user mode.
~~:S:wait:/sbin/sulogin
代碼如下:
# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
代碼如下:
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin
代碼如下:
# What to do when CTRL-ALT-DEL is pressed. #在啟動過程中是否允許按CTRL-ALT-DELETE重啟系統
#ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
代碼如下:
# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."
代碼如下:
# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop
代碼如下:
# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
# <id>:<runlevels>:<action>:<process>
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
# getty進程來提供虛擬終端裝置的服務
1:2345:respawn:/sbin/getty 38400 tty1
代碼如下:
#標籤欄位的值是1,1是裝置tty1的數字尾碼,tty1與相應的進程相關聯,該getty進程可以啟動的runlevel是2,3,4和5,當該進程終止時,init馬上就重新啟動它。啟動進程的路徑名是/sbin/getty,該進程是實現虛擬終端支援的最小版本的getty,為tty1提供啟動虛擬設備的進程。
2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
T1:23:respawn:/sbin/getty -L ttyS1 115200 vt100
# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3
5.樣本
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
# End /etc/inittab