您可以將Linux運行級別視為操作系統運行的不同模式。這些模式或運行級別中的每一個都有其打開或關閉的進程和服務。
從Linux啟動開始,它就始終處于某個運行級別。隨著您繼續使用Linux時間變化,此運行級別可能會發生變化,具體取決于操作系統需要訪問的服務類型。
例如,使用圖形用戶界面運行Linux機器將需要不同的運行級別,而不是僅在系統上運行命令行。
這是因為圖形用戶界面需要訪問命令行根本不需要的各種服務。為了讓系統確定需要打開或關閉哪些服務,它會根據需要更改運行級別。
您可能已經使用Linux多年,卻沒有意識到存在不同的運行級別。這是因為大多數服務器管理員不需要經常配置它。
但是,Linux運行級別確實使管理員能夠更好地控制和管理系統。您可以更改系統所在的運行級別,在不同的運行級別運行不同的服務。
這使我們能夠完全控制我們的系統在那些運行級別訪問哪些服務。
什么是Linux 運行級別
在Linux中有七種不同的運行級別,從0到6。不同的發行版可能會以不同的方式使用這七個運行級別,因此編制一份運行級別功能的明確列表并不容易。
相反,您需要檢查運行級別在不同的Linux發行版的工作方式。在大多數情況下,下面的列表展示了Linux發行版的運行級別與能力.
**運行級別0 **關閉系統。運行級別6 重新引導系統。
**運行級別1 **單用戶模式,用于維護或管理任務。您可能還會看到這種模式被稱為S運行級別。這個用戶是root用戶。
**運行級別2 **多用戶模式。此運行級別不能夠使用任何網絡服務。
**運行級別3 **具有網絡功能的多用戶模式。您使用的系統將不能引導至GUI圖形用戶界面或者桌面環境,這是服務器首選的運行級別。
**運行級別4 **用戶可以根據自己的目的自定義此運行級別,我們將在本教程后面介紹如何執行此操作。
運行級別5與運行級別3相同,但它還啟動了一個顯示管理器。如果您引導至GUI或者具有桌面環境的系統,這就是您正在使用的運行級別。
查看當前運行級別
您可在終端中運行命令runlevel
即可查看大多數Linux發行版的當前運行級別。
runlevel
命令它會給你兩個不同的數字。第一個數字是您的系統之前的運行級別,第二個數字是您系統的當前運行級別。
N
是none
的縮寫,表示系統之前的運行級別與現在運行級別相同。5
表示我們的系統當前處于 運行級別5 。
在這個例子中,我們運行的是CentOS,它可直接啟動到圖形界面,因此系統直接進入運行級別 5。
runlevel
N 5
更改運行級別
您可以使用telinit
命令更改系統的當前運行級別。要更改Linux的運行級別您必須以root或者具有sudo權限用戶才能運行telinit
命令。
例如,要將CentOS運行級別更改為3,請運行命令sudo telinit 3
。注意,運行級別在Debian和Ubuntu的工作方式不同。
例如,即使沒有啟動 GUI,Ubuntu也會啟動到運行級別 5。
如果您按照上面的示例進行操作,您的屏幕可能會變為空白。這是因為你停留在空的TTY,鍵入Alt+F1
即可進入終端工作。
如果我們再次運行命令runlevel
,我們會看到現在處于運行級別 3,并且之前的運行級別是 5,因為我們剛剛更改運行級別,所以不是None
。
近年來,systemd已經取代了長期存在的System V初始化系統。它仍然以基本相同的方式工作,但使用了不同命令方式設置運行級別,并且將運行級別稱為target
。
運行級別 0是poweroff.target。運行級別 1是rescue.target。運行級別 2是multi-user.target。
運行級別 3是multi-user.target。運行級別 4是multi-user.target。運行級別 5是graphical.target。運行級別 6是reboot.target。
在使用SystemD作為初始化系統的Linux發行版中,設置運行級別的命令是systemctl isolate
。
sudo systemctl isolate multi-user.target # or runlevel3.target
sudo systemctl isolate graphical.target # or runlevel5.target
更改默認運行級別
您可能希望啟動到不同的運行級別的原因有很多。例如,系統管理員通常會啟動到命令行接口,并且僅在認為必要時啟動到圖形界面時。
過去,需要編輯/etc/inittab文件以在啟動時定義默認運行級別。在某些發行版上,您可能仍然會發現這種情況。
截至2016年,大多數主要Linux發行版已逐步淘汰/etc/inittab文件以支持systemd-target。我們將在本文后面介紹差異。
您可能會發現您的系統根本沒有/etc/inittab文件,或者您的inittab文件可能會建議您使用systemd代替。
在CentOS系統中。當你打開/etc/inittab文件文件時,第一行將提示你一個消息ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM。
也就是說,你在此編輯的任何配置都不會影響你系統。也就相當于廢棄了。并告訴你獲取系統默認運行級別的命令是sudo systemctl get-default
。
設置系統默認運行級別命令sudo systemctl set-default TARGET.target
。
sudo systemctl get-default
sudo systemctl set-default multi-user.target # or runlevel3.target
sudo systemctl set-default graphical.target # or runlevel5.target
sudo systemctl get-default
如果你需要查看其他可用systemd-target及其關聯的運行級別,可以運行命令ls -l /lib/systemd/system/runlevel*
。
這些符號鏈接告訴我們systemd目標的運行方式幾乎與運行級別相同。那么,我們也可以通過修改/etc/systemd/system/default.target的符號鏈接修改默認運行級別或目標。
ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
此命令會將我們的默認運行級別更改為 3。
sudo ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
sudo systemctl get-default
因此下次重新啟動時,我們的系統將處于運行級別3而不是5。如果您想要不同的運行級別,您只需用不同的數字代替命令中的3
。
作為參考,ln
命令中的-f
選項指示應在創建新鏈接之前刪除目標文件。您也可以先使用rm命令將其刪除。
您可以再次使用systemctl get-default
命令確認更改是否成功。
運行級別3與運行級別5
您將聽到并使用最多的兩個運行級別將是3和5。基本上可以總結為:運行級別3是命令行,運行級別5是圖形用戶界面。
當然,并不是每個發行版都遵循這個約定,在您的系統可以由管理員配置,以便這些運行級別有更多差異。
但是,總的來說,它就是這樣工作的。如果您想查看在這兩個運行級別上啟用了哪些服務,我們將在下一節中介紹。
列出運行級別服務
直到最近幾年,systemd是列出在不同運行級別啟用的服務的命令。如果您的操作系統不是最新的,該命令可能會給您一個錯誤或將讓你使用chkconfig –list
。
如果我們想查看啟動到圖形模式,運行級別 5時啟動哪些服務,可以運行命令systemctl list-dependencies graphics.target
。
要查看在其它運行級別啟用的服務,只需將graphical.target
替換為您需要查看的目標的名稱。
sudo systemctl list-dependencies graphics.target
如果您想查看指定的服務運行在哪個運行級別,可以使用命令systemctl show -p WantedBy [服務名稱]
。
例如,如果您想查看 SSH服務將在哪個運行級別運行,您可以運行命令systemctl show -p WantedBy sshd.service
。
我們的SSH服務運行在multi-user.target。如果我們還希望它在我們啟動到圖形界面時啟動時,也就是運行級別 5/graphical.target。請運行命令systemctl enable sshd.service
。
sudo systemctl show -p WantedBy sshd.service
Linux運行級別與安全
正如我們在本文前面所說的,Linux運行級別的目的是讓管理員控制在特定條件下運行的服務。
對系統進行這種精細控制可以增強安全性,因為您可以確定沒有無關的服務在運行。
當管理員不知道究竟運行了哪些服務時,就會出現問題,因此他不會費心保護這些攻擊面。
您可以使用本教程中的方法來配置默認運行級別并控制運行的應用程序。這些做法不僅可以釋放系統資源,還可以讓您的服務器更加安全。
請記住只使用您需要的運行級別。例如,如果您只打算使用終端,則啟動運行級別 5圖形界面是沒有意義的。
更改為不同的運行級別將引入多個新服務,其中一些可能完全在后臺運行,您可能會忘記保護它們。
運行級別選擇
確定最適合您的運行級別取決于具體情況。通常,您可能會定期使用運行級別3和5。
如果您熟悉命令行并且不需要圖形界面,那么運行級別 3將是最適合您的,在大多數發行版上。
這將阻止不必要的服務運行。另一方面,如果您想要更多的桌面體驗和圖形界面來使用各種應用程序等,那么運行級別5將是您首選的運行級別。
如果您需要在生產服務器上執行維護,運行級別1非常適合這種情況。您可以使用此運行級別來確保您是服務器上的唯一一個用戶。
在極少數情況下,您甚至可能需要使用運行級別 4。這僅適用于您或系統管理員具有自定義配置的運行級別的特定情況。我們將在下一節介紹如何做到這一點。
正如您可能假設的那樣,您不會,也不能在運行級別0或6中運行您的系統,但可以切換到它們只是為了重新啟動或關閉電源。
通常你不需要這樣做,因為還有其他命令可以為我們這樣做。
Linux創建運行級別
在Linux中創建一個新的運行級別是可能的,但您極不可能需要這樣做。如果您仍然決定這樣做。
您可以首先復制現有的systemd target的其中一個,然后使用您自己的自定義進行編輯。這些目標都位于/usr/lib/systemd/system/目錄中。
如果您想基于graphics.target/運行級別 5建立新的運行級別/目標,你可以運行命令cp /usr/lib/systemd/system/graphical.target /usr/lib/systemd/system/mynew.target
創建graphical.target
的副本。
創建一個新的wants
目錄運行命令mkdir /etc/systemd/system/mynew.target.wants
。
然后從/usr/lib/systemd/system/graphics.target.wants
目錄中復制符號鏈接到你運行級別目錄的wants目錄中。
cp /usr/lib/systemd/system/graphical.target \\
/usr/lib/systemd/system/mynew.target
sudo mkdir /etc/systemd/system/mynew.target.wants
我希望你覺得這個教程很有用。繼續回來。
-
Linux
+關注
關注
87文章
11345瀏覽量
210402 -
操作系統
+關注
關注
37文章
6896瀏覽量
123749 -
命令
+關注
關注
5文章
696瀏覽量
22112
發布評論請先 登錄
相關推薦
如何檢查Linux服務器的運行時間
![如何檢查<b class='flag-5'>Linux</b>服務器的<b class='flag-5'>運行</b>時間](https://file.elecfans.com/web2/M00/7D/AF/poYBAGOAbC2AFa3XAABWLqOp3eI136.png)
Linux中如何查看系統運行信息
![<b class='flag-5'>Linux</b>中如何查看系統<b class='flag-5'>運行</b>信息](https://file.elecfans.com/web2/M00/7E/46/pYYBAGOAfnOAWm8oAAGSBbzAk20886.png)
![](https://file1.elecfans.com/web2/M00/84/A3/wKgZomRmDk-ALnyMAAGyuhxcF_8184.png)
![](https://file1.elecfans.com/web2/M00/84/AC/wKgaomRmD9aAVmSZAAHda6LowvE735.png)
![](https://file1.elecfans.com/web2/M00/84/AD/wKgZomRmD9eAGJsEAAGGd_fxsfU583.png)
評論