1. /etc/inittab文件的作用
Linux內核啟動完成后,內核通過啟動第一個用戶進程(init進程)來啟動其他用戶記的進程或服務,init進程是Linux系統中所有進程的父進程。
init進程將解析inittab文件,運行操作系統的配置腳本,對Linux系統進行初始化。
2. /etc/inittab文件的格式分析
inittab文件是一個不可執行的文本文件,它被按照固定的格式書寫,以供init進程識別。inittab的每一行都是一個登記項,每個登記項的結構都相同,具體如下:
identifier : run_level : action : process |
(2)run_level
run_level系統運行級,用於指定相應的登記項在哪一個運行級中被處理。如果該字段為空,那么相應的登記項將適用於所有的運行級。在該字段中,可以同時指定一個或多個運行級,其中各運行級分別以數字0.1.2.3.4.5.6表示,且無需對其進行分隔。
runlevel 0 |
讓init關閉所有進程並終止系統。 |
runlevel 1 |
用來將系統轉到單用戶模式,單用戶模式只能有系統管理員進入,在該模式下處理那些在有登錄用戶的情況下不能進行更改的文件,改runlevel的編號1也可以用S代替。 |
runlevel 2 |
允許系統進入多用戶的模式,但並不支持文件共享,這種模式很少應用。 |
runlevel 3 |
最常用的運行模式,主要用來提供真正的多用戶模式,也是多數服務器的缺省模式。 |
runlevel 4 |
一般不被系統使用,用戶可以設計自己的系統狀態並將其應用到runlevel。 |
runlevel 5 |
將系統初始化為專用的X Window終端。對功能強大的Linux系統來說,這並不是好的選擇,但用戶如果需要這樣,也可以通過在runlevel啟動來實現該方案。 |
runlevel 6 |
關閉所有運行的進程並重新啟動系統。 |
(3)action
action字段描述其后的process的運行方式。常用的action字段如下:
respawn |
init應該監視這個進程,即使其結束后也應該被重新啟動。 |
wait |
init應該運行這個進程一次,並等待其結束后再進行下一步操作。 |
once |
init只運行一次該進程。 |
boot |
系統啟動時運行該進程。 |
bootwait |
在系統啟動時運行,init等待進程完成。 |
ctrlaltdel |
當Ctrl+Alt+Del三個鍵同時按下時運行,把SIGINT信號發送給init。 |
sysinit |
在運行boot或bootwait進程之前運行。 |
powerfail |
當init收到SIGPWR信號時運行。 |
powerokwait |
當收到SIGPWD信號且/etc/文件中的電源狀態包含OK時運行。 |
powerwait |
當收到SIGPWD信號,並且init等待進程結束時運行。 |
(4)process
process字段,表示所要執行的shell命令。任何合法的shell語法均適用於該字段。
3. 舉例
簡易的inittab文件,示例如下:
#first:run the system script file ::sysinit:/etc/init.d/rcS #系統開機或重新啟動,執行rcS文件 ::askfirst:-/bin/login #系統啟動后,運行登錄程序 ::ctrlaltdel:-/sbin/reboot #按下組合鍵“ctrl+alt+del”,重啟Linux系統 #umount all filesystem ::shutdown:/bin/umount -a -r #系統關機時,卸載所有文件系統 #restart init process ::restart:/sbin/init #重啟init進程 |