Linux完成核心(Kernel)引導後,會由init初始化進程調用/etc/inittab設定檔(ps -aux | less,init進程號為始終為1,是所有系統進程的起點,init進程也有一個PID為0的父進程Kernel Scheduler,該進程用來分配CPU時間和進行進程間切換。)。
/etc/inittab檔案格式:id:run-levels:action:process,共包含4項,用冒號分隔,其中某些部份可以為空白,各項詳細解釋如下:
id
標識符,一般為兩位字母或數字,該標識符唯一,在設定檔中不能重複。
run-level
指定系統運行級,即執行登記項的init層級。用於指定相應的登記項適用於哪一個運行級,即在哪一個運行級中被處理。如果該欄位為空白,那麼相應的登記項將適用於所有的運行級。在該欄位中,可以同時指定一個或多個運行級,其中各運行級分別以數字0 1 2 3 4 5 6或字母a、b、c 表示,且無需對其進行分隔。
Linux有7個運行級,如下:
0-halt 關機,讓init關閉所有進程並關機
1-Single user mode 單使用者字元介面,通常又稱為s或S
2-Multiuser,without NFS 不具備網路檔案系統功能的多使用者字元介面
3-Full multiuser mode 具備網路檔案系統功能的多使用者字元介面
4-unused 保留不用
5-X11 具備網路功能的圖形化使用者介面
6-reboot 關閉所有啟動並執行進程並重新啟動系統
除此之外還有ABC三個運行層級,但在Linux都沒有意義。
action
指定運行動作,用於指定init(M)命令或進程對相應進程(在“process”欄位定義)所實施的動作,有以下幾種:
行為描述respawn 一旦第4項指定的process命令中止,便重新運行該命令。wait執行第4項指定的process,並等其結束後再運行其它命令。once執行第4項指定的process,不等待它執行完成,繼續運行其它命令。boot不論在哪個執行等級,系統啟動時都會運行第4項指定的process。bootwait不論在哪個執行等級,系統啟動時都會運行第4項指定的process,且一直等它執行完備。off關閉任何動作,相當於忽略該配置行。ondemand進入ondemand執行等級時,執行第4項指定的process。initdefault系統啟動後進入的執行等級,該行不需要指定process。sysinit不論在哪個執行等級,系統會在執行boot及bootwait之前執行第4項指定的process。powerwait當系統的供電不足時執行第4項指定的 process,且一直等它執行完畢。powerokwait當系統的供電恢複正常時執行第4項指定的process,且一直等它執行完畢。powerfailnow當系統的供電嚴重不足時執行第4項指定的process。powerfail當出現電源錯誤時執行第4項指定的process命令,不等待其結束。ctrlaltdel當使用者按下【Ctrl+Alt+Del】時執行第4項指定的 process。kbrequest當使用者按下特殊的按鍵組合時執行第4項指定的process,此按鍵組合需在keymaps檔案定義。
process
指定要啟動並執行Shell指令碼/命令。