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




評論