正確理解Linux運行級別

通過優銳課的java學習分享中,瞭解有關Linux運行級別的更多信息-正確的方法!

你可以將Linux運行級別視爲操作系統運行的不同“模式”。這些模式或運行級別中的每一個都有其自己的已打開或關閉的進程和服務的列表。 從Linux啓動時開始,它始終處於某個運行級別。

隨着你繼續使用計算機,此運行級別可能會更改,具體取決於操作系統需要訪問的服務類型。

例如,與僅在系統上運行命令行的情況相比,使用圖形用戶界面運行Linux機器將需要不同的運行級別。

這是因爲圖形用戶界面將需要訪問命令行所隱含的各種服務。 爲了使系統確定需要打開(或關閉)哪些服務,它會根據需要更改運行級別。

Linux運行級別的重要性

你可能已經使用Linux多年了,而沒有意識到有不同的運行級別。 這是因爲大多數服務器管理員不需要經常配置它。
但是,Linux運行級別確實使管理員能夠更好地控制其管理的系統。

可以更改系統所在的運行級別(稍後將在本文中瞭解如何操作)以及在運行級別內部運行的服務。 這使我們可以完全控制我們的系統在任何給定時間訪問哪些服務。                                             
Linux中有幾個運行級別?

Linux中有七個不同的運行級別,從零到六個。 各種發行版可能會不同地使用這七個運行級別,因此要彙編一份確定的運行級別清單並不容易。

相反,你需要檢查運行級別如何在你使用的特定發行版上工作。 在大多數情況下,以下列表表示Linux發行版通常如何配置運行級別:

運行級別0關閉系統。
運行級別1是單用戶模式,用於維護或管理任務。 你可能還會看到此模式稱爲運行級別S(S代表單用戶)。
運行級別2是多用戶模式。 該運行級別不使用任何網絡服務。
運行級別3是具有聯網功能的多用戶模式。 如果你使用的系統沒有引導進入GUI(圖形用戶界面),則這是你慣常使用的運行級別。
不使用運行級別4。 用戶可以根據自己的目的自定義此運行級別(我們將在本文後面介紹如何執行此操作)。
運行級別5與運行級別3相同,但它還會啓動顯示管理器。 如果使用引導進入GUI的系統,則這是你慣常使用的運行級別。
運行級別6重新引導系統。

我當前的運行水平是多少?
你只需在終端中輸入“ runlevel”,即可在大多數發行版上看到當前的運行級別。

正確理解Linux運行級別

輸入“運行級別”命令時,它將給你兩個不同的數字。 第一個數字是系統正在運行的先前運行級別,第二個數字是系統的當前運行級別。
在上面的屏幕截圖中,“ N”是“ none”的縮寫,表示該系統以前沒有處於任何不同的運行級別。 “ 5”表示我們的系統當前處於運行級別5。
在本示例中,我們正在運行CentOS,該CentOS直接引導到圖形界面,因此爲什麼系統直接進入運行級別5。

如何更改當前運行級別?

你可以使用“ telinit”命令更改系統的當前運行級別。 例如,要更改爲CentOS上的運行級別3,你可以輸入:
$ telinit 3

正確理解Linux運行級別

請記住,你必須是root用戶才能執行此命令。 請注意,運行級別在Debian和Ubuntu上的工作方式有所不同-例如,即使不啓動GUI,Ubuntu也會啓動進入運行級別5。
如果你按照上面的示例,你的屏幕可能會變黑。 這是因爲你留在-現在爲空-tty。 只需在鍵盤上執行Alt + F1(或其他功能鍵)即可將其帶到工作終端。

如果再次使用“ runlevel”命令,我們將看到我們現在處於運行級別3,並且由於我們剛剛對其進行了更改,因此上一個運行級別被列爲5。

正確理解Linux運行級別

Linux系統的目標是Vs. 運行級別

近年來,systemd已經取代了長期存在的“ System V init”(運行級別)系統。 它仍然以基本相同的方式工作,但是使用一些新命令,並且通常將“運行級別”稱爲“目標”。
運行級別0 = poweroff.target(runlevel0.target)
運行級別1 = rescue.target(runlevel1.target)
運行級別2 =多用戶目標(runlevel2.target)
運行級別3 =多用戶目標(runlevel3.target)
運行級別4 =多用戶目標(runlevel4.target)
運行級別5 = graphic.target(runlevel5.target)
運行級別6 = reboot.target(runlevel6.target)

隨着本教程的進行,我們將繼續介紹systemd和你需要知道的命令。

如何在啓動時更改默認運行級別?

有很多原因可能導致你希望啓動到另一個運行級別。 例如,系統管理員通常會啓動到命令行,並且僅在認爲必要時才啓動圖形界面。
對於此功能,你需要確保將默認運行級別設置爲3,而不是5。

過去,需要在啓動時編輯/ etc / inittab文件以定義默認運行級別。 在某些發行版上,你可能仍然會遇到這種情況。
如果使用幾年未升級的操作系統,你仍然會發現此方法很適合你。有很多原因可能導致你希望啓動到另一個運行級別。 例如,系統管理員通常會啓動到命令行,並且僅在認爲必要時才啓動圖形界面。
$ vi /etc/inittab

正確理解Linux運行級別

在上面的屏幕截圖中,運行級別5當前設置爲啓動的默認運行級別。

截至2016年,大多數主要的Linux發行版都已淘汰了/ etc / inittab文件,而使用systemd目標-我們將在本文後面介紹這些差異。

你可能會發現你的系統根本沒有/ etc / inittab文件,或者你的inittab文件可能建議你使用systemd代替,例如CentOS系統中的此屏幕快照。
正確理解Linux運行級別

要檢查系統的當前默認目標:
$ systemctl get-default
正確理解Linux運行級別

在上面的屏幕截圖中,從系統返回的回覆是“ graphical.target”。 你可能會猜到,這等效於運行級別5。
要查看其他可用目標及其關聯的運行級別,請輸入:
$ ls -l /lib/systemd/system/runlevel*

正確理解Linux運行級別
這些符號鏈接告訴我們,systemd目標的運行方式幾乎與運行級別相同。 那麼,如何在啓動時更改默認運行級別(或目標)? 我們需要創建一個新的符號鏈接,如下所示:
$ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target

正確理解Linux運行級別

此命令會將我們的默認運行級別更改爲3,因此,下次重新引導時,我們的系統將處於運行級別3而不是5。如果你希望使用不同的運行級別,則只需用其他數字代替“ 3”即可。 命令。

作爲參考,該命令中的-f開關指示在創建新鏈接之前應刪除目標文件。 你也可以先使用簡單的rm命令將其刪除。
你可以再次使用“ systemctl get-default”命令確認更改已成功完成。

正確理解Linux運行級別
運行級別3與。 運行級別5

你將聽到並使用最多的兩個運行級別分別是3和5。基本上可以歸結爲:運行級別3是命令行,運行級別5是圖形用戶界面。

當然,並非每個發行版都遵循此約定,並且你的系統可以由管理員配置,以使這些運行級別具有更多差異。
但是,總的來說就是這樣。 如果你想確切瞭解在這兩個運行級別上啓用了哪些服務,我們將在下一部分中介紹。

列出在特定運行級別啓用的服務

直到最近幾年,“ chkconfig -list”是用於列出將在不同運行級別啓用的服務的命令。 如果你的操作系統是最新的,則該命令可能會給你帶來錯誤或將你推遲到systemd。

正確理解Linux運行級別

如果要查看引導到圖形模式(運行級別5)時將啓動什麼服務,可以運行以下命令:
$ systemctl list-dependencies graphical.target

正確理解Linux運行級別

要查看默認情況下在其他運行級別上運行的服務,只需將“ graphical.target”替換爲你需要查看的目標名稱。
進程將在哪個運行級別下運行?

如果要查看特定服務在哪個運行級別運行,可以使用以下命令:
$ systemctl show -p WantedBy [name of service]

例如,如果你想查看SSH守護進程將在哪個運行級別運行,請鍵入:
$ systemctl show -p WantedBy sshd.service

正確理解Linux運行級別

根據以上屏幕截圖中的輸出,SSH服務將在運行級別2、3和4(multi-user.target)上啓動。
如何更改應用程序的運行級別?
如上所示,我們的SSH服務僅在2-4級運行(multi-user.target)。 如果我們還希望它在啓動到圖形界面-運行級別5(graphical.target)時啓動,該怎麼辦? 我們可以通過以下命令應用該配置:
$ systemctl enable sshd.service

正確理解Linux運行級別

Linux中運行級別的安全問題

正如我們在本文前面所說的,Linux運行級別的重點是使管理員可以控制在特定條件下運行的服務。對系統進行這種細粒度控制可以增強安全性,因爲你可以確保沒有多餘的服務在運行。

當管理員不知道確切正在運行什麼服務時,就會出現問題,因此不必費心保護這些***面。

你可以使用本指南中的方法來配置默認運行級別並控制正在運行的應用程序。這些做法不僅可以釋放系統資源,還可以使服務器更安全。
記住只使用所需的運行級別。例如,如果僅打算使用終端,則沒有必要啓動運行級別5(圖形界面)。

更改爲不同的運行級別將引入多個新服務,其中一些服務可能會在後臺完全運行,你可能會忘記保護它們。

哪個運行級別最適合我?

確定哪種運行級別最適合所有人取決於情況。通常,你可能會定期使用運行級別3和5。

如果你熟悉命令行並且不需要圖形界面,則運行級別3(在大多數發行版中)將是最適合你的。

這將阻止不必要的服務運行。另一方面,如果你想要更多的桌面體驗和圖形界面來使用各種應用程序等,則運行級別5將是你的首選運行級別。

如果需要在生產服務器上執行維護,則運行級別1非常適合這種情況。這用於確保你是服務器上的唯一服務器(甚至沒有啓動網絡服務),並且可以不間斷地執行維護。
在極少數情況下,你甚至可能需要使用運行級別4。這僅在你或系統管理員具有自定義配置的運行級別的特定情況下使用。我們將在下一部分中介紹如何做到這一點。

正如你可能已經假設的那樣,你不會(也不能)在運行級別0或6中運行系統,但是可以切換到它們以重新引導或關閉電源。通常沒有必要這樣做,因爲還有其他命令可以爲我們執行此操作。

我們可以在Linux中創建新的運行級別嗎?

可以在Linux中創建一個新的運行級別,但是極不可能需要這樣做。 如果確定要執行此操作,則可以從複製現有的systemd目標之一開始,然後使用自己的自定義進行編輯。

目標位於:
/usr/lib/systemd/system

如果要基於graphical.target(運行級別5)作爲新的運行級別/目標,請將該目錄複製到新的目標目錄。
$ cp /usr/lib/systemd/system/graphical.target /usr/lib/systemd/system/mynew.target

之後,創建一個新的“ wants”目錄,如下所示:
$ mkdir /etc/systemd/system/mynew.target.wants

然後從/ usr / lib / systemd / system符號鏈接要爲新的運行級別啓用的其他服務。

我希望你對本教程有用。 繼續回來!

喜歡這篇文章的可以點個贊,歡迎大家留言評論,記得關注我,每天持續更新技術乾貨、職場趣事、海量面試資料等等
 > 如果你對java技術很感興趣也可以交流學習,共同學習進步。 
不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代

文章寫道這裏,歡迎完善交流。最後奉上近期整理出來的一套完整的java架構思維導圖,分享給大家對照知識點參考學習。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java乾貨

正確理解Linux運行級別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章