linux運行級別定義在“/etc/inittab”配置文件中。“/etc/inittab”是linux初始化文件系統時,init初始化程序用到的配置文件;該配置文件只能用來設置系統的默認運行級別,也就是系統開機后會進入那個運行級別。
本教程操作環境:linux5.9.8系統、Dell G3電腦。
什么是運行級別呢?
其實 Linux 是通過運行級別來確定系統啟動時到底啟動哪些服務的。
Linux 默認有 7 個運行級別,具體如表 1 所示。
? ? ? ? ? ? ? ? 運行級別 | ? ? ? ? ? ? ? ? 含?義 |
---|---|
? ? ? ? ? ? ? ? 0 | ? ? ? ? ? ? ? ? 關機 |
? ? ? ? ? ? ? ? 1 | ? ? ? ? ? ? ? ? 單用戶模式,可以想象為 windows 的安全模式,主要用于系統修復 |
? ? ? ? ? ? ? ? 2 | ? ? ? ? ? ? ? ? 不完全的命令行模式,不含 NFS 服務 |
? ? ? ? ? ? ? ? 3 | ? ? ? ? ? ? ? ? 完全的命令行模式,就是標準字符界面 |
? ? ? ? ? ? ? ? 4 | ? ? ? ? ? ? ? ? 系統保留 |
? ? ? ? ? ? ? ? 5 | ? ? ? ? ? ? ? ? 圖形模式 |
? ? ? ? ? ? ? ? 6 | ? ? ? ? ? ? ? ? 重新啟動 |
linux運行級別定義在哪個文件中
linux運行級別定義在“/etc/inittab”配置文件中。
/etc/inittab 配置文件只能用來設置系統的默認運行級別,也就是系統開機后會進入那個運行級別
/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
示例
# 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
相關推薦:《Linux視頻教程》