『學了就忘』Linux啟動引導與修復 — 68、Linux系統執行級別

繁華似錦Fighting發表於2021-12-08

1、Linux系統執行級別介紹

Linux預設有7個執行級別,Linux 系統任何時候都執行在一個指定的執行級別上。不同的執行級別所執行的程式和服務不盡相同,所要完成的工作和要達到的目的也不相同。

  • 0:關機。
  • 1:單使用者模式,可以想象為Windows系統的安全模式,主要用於系統修復。
  • 2:不完全的命令列模式(命令列模式就是命令介面),不含NFS服務(Linux系統和Linux系統之間檔案共享的一種服務)。
  • 3:完全的命令列模式,就是標準字元介面(我們之前一直使用的命令列模式,就是這種模式)。
  • 4:系統保留。
  • 5:圖形模式。
  • 6:重啟動。

2、檢視執行級別

在Linux系統中可以使用runlevel命令來檢視系統的執行級別。

命令如下:

# N代表進入這個級別前,上一個是哪個級別。3代表當前級別
[root@localhost ~]# runlevel 
N 3

說明:

N就是None的意思,也就是說系統是開機直接進入的3執行級別,沒有上一個執行級別。那如果是從圖形介面切換到字元介面的話,再檢視執行級別,就應該是5 3

3、修改當前系統的執行級別

使用init命令即可,注意:這不是init程式。

命令如下:

  • 進入圖形介面,當然Linux系統已經安裝了圖形介面才可以進入。
    [root@localhost ~]# init 5
  • 關機
    [root@localhost ~]# init 0
  • 重啟動
    [root@localhost ~]# init 6

說明

如果我們沒有安裝圖形介面,執行了init 5命令,在遠端終端上是沒有任何反應的,而在虛擬機器中,會提示如下:嘗試啟動圖形介面執行級別失敗。

image

但是我們在查詢當前Linux系統的執行級別,執行runlevel命令時,結果顯示的是3 5,記住這是一個假象,我們並沒有進入到圖形介面級別。

不過要注意,使用init命令執行關機和重啟,這並不是太安全,容易造成資料丟失。所以推薦大家還是使用shutdown命令進行關機和重啟。
關於Linux系統的關機和重啟的詳細說明可以檢視前面文章:Linux系統的關機和重啟

4、系統預設執行級別

上邊瞭解了什麼是Linux系統的執行級別,我們把注意力拉回到系統啟動的過程中。

系統預設的執行級別,就是系統啟動後直接進入的執行級別。而上邊說的是,檢視系統當前的執行的級別,而不是檢視預設的系統執行級別。

Linux系統預設執行級別,在/etc/inittab配置檔案中進行配置的,檔案的內容如下:

image

從上圖中可以看到,裡邊的很多資訊都放入到其他不同的檔案中了。

說明:

  • /etc/inittab配置檔案在以前的Linux發行版本中,如Red Hat 5或以前版本,/etc/inittab配置檔案在系統的啟動過程中,是非常重要的一個配置檔案,需要載入裡邊的資料。但是在Red Hat 6以後,/etc/inittab配置檔案的功能弱化了。
    所以Red Hat 6中,/etc/inittab配置檔案的唯一作用就是配置Linux系統預設執行級別。
  • id:3:initdefault::中間的數字3的位置,就是配置Linux系統預設執行級別,寫幾就是對應的級別。

注意

下圖的執行級別說明中註釋了,0和6級別是不能被設定成系統預設執行級別的,只能用1-5中選擇系統預設的執行級別。但是在這裡推薦系統的預設執行級別只能寫3或5,其他的級別要不就是關機重啟,要不就是保留或單使用者,都不能作為系統預設執行級別的。

image

5、/etc/rc.d/rc.local檔案說明

/etc/rc.d/rc.local配置檔案是一個非常重要的檔案,這個配置檔案會在使用者登陸之前讀取,這個檔案中寫入什麼命令,在每次系統啟動時都會執行一次。也就是說,我如果有任何需要在系統啟動就執行的工作,只需要寫入/etc/rc.d/rc.local這個配置檔案即可,如一些服務開機的時候就需要啟動,可以把完整的服務啟動命令配置在這裡。(注意最好不要寫service啟動方式,寫/etc/init.d/路徑的方式啟動)

/etc/rc.d/rc.local配置檔案內容如下:

image

可以看到/etc/rc.d/rc.local檔案是一個shell指令碼,touch一個非常隱蔽的檔案/var/ lock/ subsys/local檔案。(touch命令:如果檔案不存在,則建立該檔案,如果檔案存在,則修改該檔案的訪問時間。)

換句話說,系統每次開機,都來找這個非常隱蔽的檔案,所以這個檔案的修改時間就是系統的啟動時間了。也就是說,這條命令的作用就是獲取系統的啟動時間。

同時注意一下,/etc/rc.d/rc.local配置檔案還有一個軟連結檔案,為/etc/rc.local配置檔案,(兩個檔案就相當於一個檔案,修改哪一個都可以,軟連結內容看Linux系統中的硬連線和軟連線)。

/etc/rc.d/rc.local配置檔案和/etc/rc.local配置檔案的關係如下圖:

image

相關文章