【Linux筆記】Linux中inittab剖析


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腳本/命令。

/***************************隱藏部份******************************* /

最先運行的服務存放在/etc/rc.d目錄下,啟動腳本位於目錄/etc/rc.d/init.d中,這些腳本的是被ln命令連接到/etc/rc.d/rc[0-6].d。

在init進程讀取/etc/inittab的過程的時候,首先會判斷系統缺省的運行級別initdefault(/etc/inittab),

/etc/rc.d/rc.sysinit,系統初始化操作

腳本/etc/rc.d/rc.sysint,不管系統是何級別(0-6),都會執行該腳本,在每次系統啟動時運行一次。完成系統服務程序啟動,如系統環境變量設置、設置系統時鍾、加載字體、檢查加載文件系統、生成系統啟動信息日志文件等。

判斷默認的運行級別,調味用/etc/rc.d/rc腳本,執行相應運行級別目錄中的服務程序,完成相應運行級別的初始化設置。

如果默認的運行級別為3(N:0-6),則如下:

如上文件列表中的文件:

以S開頭的文件,S-Start,表示啟動該腳本,以K開頭的文件,K-Kill,表示關閉該腳本。

數字0-x,表示腳本啟動的順序,數字越小,越優先啟動。 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM