Linux內核啓動完成後,內核經過啓動第一個用戶進程(init進程)來啓動其餘用戶記的進程或服務,init進程是Linux系統中全部進程的父進程。shell
init進程將解析inittab文件,運行操做系統的配置腳本,對Linux系統進行初始化。服務器
inittab文件是一個不可執行的文本文件,它被按照固定的格式書寫,以供init進程識別。inittab的每一行都是一個登記項,每一個登記項的結構都相同,具體以下:ide
identifier : run_level : action : process |
(2)run_level spa
run_level系統運行級,用於指定相應的登記項在哪個運行級中被處理。若是該字段爲空,那麼相應的登記項將適用於全部的運行級。在該字段中,能夠同時指定一個或多個運行級,其中各運行級分別以數字0.1.2.3.4.5.6表示,且無需對其進行分隔。操作系統
runlevel 0 設計 |
讓init關閉全部進程並終止系統。rest |
runlevel 1blog |
用來將系統轉到單用戶模式,單用戶模式只能有系統管理員進入,在該模式下處理那些在有登陸用戶的狀況下不能進行更改的文件,改runlevel的編號1也能夠用S代替。進程 |
runlevel 2ip |
容許系統進入多用戶的模式,但並不支持文件共享,這種模式不多應用。 |
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語法均適用於該字段。
簡易的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進程 |