跳轉到內容

Ict-創新/LPI/101.3

來自華夏公益教科書,開放的書籍,開放的世界

101.3 執行級別,重啟和關閉系統

[編輯 | 編輯原始碼]

候選人應該能夠管理系統的執行級別。

此目標包括更改為單使用者模式、關閉或重啟系統。候選人應該能夠在切換執行級別之前提醒使用者並正確終止程序。此目標還包括設定預設執行級別。


關鍵知識領域

  • 設定預設執行級別。
  • 在執行級別之間切換,包括單使用者模式。
  • 從命令列關閉和重啟。
  • 在切換執行級別或其他重大系統事件之前提醒使用者。
  • 正確終止程序。

傳統上,Linux 有 7 個執行級別,編號從 0 到 6。執行級別定義了計算機啟動後的狀態。除了執行級別 0 和 6,執行級別編號分配給特定配置的不同之處在於發行版與發行版之間的差異。執行級別 0 用於停止系統,執行級別 6 用於重啟系統。其餘執行級別通常分配給以下配置

  1. 單使用者模式
  2. 多使用者,文字模式,無伺服器
  3. 多使用者,文字模式,伺服器
  4. 多使用者,GUI 模式,無伺服器
  5. 多使用者,GUI 模式,伺服器。

以下是 Redhat 伺服器的執行級別。


# 預設執行級別。RHS 使用的執行級別是

# 0 - 停止(不要將 initdefault 設定為此)

# 1 - 單使用者模式

# 2 - 多使用者,無 NFS(與 3 相同,如果您沒有網路)

# 3 - 全部多使用者模式

# 4 - 未使用

# 5 - X11

為不同執行級別配置哪些服務和硬體是由為每個級別配置的一組指令碼決定的。特定於執行級別的指令碼儲存在 /etc/rc.d/rc?.d、/etc/init.d/rc?.d 或 /etc/rc?.d 或類似位置,其中 ? 是執行級別的數字。

在這些目錄中的每一個目錄下,都有一些符號連結指向一組通用的指令碼,這些指令碼位於 /etc/rc.d、/etc/init.d 或 /etc/rc.d/init.d(注意路徑中缺少數字),所有執行級別都使用這些指令碼。

符號連結的名稱以一個 *S* 或 *K*、一個數字,然後是指令碼控制的服務的名稱。*S* 意味著這是一個在進入執行級別時使用 'start' 執行的指令碼,而 *K* 代表在退出執行級別時執行的指令碼。數字指示指令碼執行的順序,而名稱指示服務。指令碼的順序由系統要求決定,例如,網路需要在郵件或 Web 伺服器啟動之前配置。如果要對符號連結進行長列表,您會發現它們指向同一個指令碼,它們只是在 init 向指令碼傳遞的引數不同。'start' 用於啟動它,'stop' 用於停止它。

啟動指令碼只是在執行時呼叫適當應用程式的 bash 指令碼。這些指令碼採用一組標準引數,即:start、stop、restart 和 reload。一些編寫不當的指令碼可能沒有實現所有引數。

配置執行級別

[編輯 | 編輯原始碼]

您可以透過更改相應 rc 目錄中的符號連結來新增或刪除執行級別中的服務,但存在各種工具來簡化這些指令碼的管理。

在 Debian 系統及其衍生系統中,您可以使用 update-rc.d 或 rc-update 指令碼,傳入您想要新增或刪除的服務的名稱以及適當的引數。

示例

# update-rc.d disable 3 apache2

將從執行級別 3 中刪除 apache2 服務

# update-rc.d enable 3 apache2

將 apache 新增到執行級別 3。

對於基於 rpm 的發行版,命令 chkconfig 執行相同的事情。

示例

# chkconfig -del httpd

將從所有配置的執行級別中刪除 Apache Web 伺服器

# chkconfig -add httpd

將 Apache Web 伺服器新增到所有預設執行級別,

# chkconfig -level 3 httpd on

將 Apache 新增到執行級別 3


除了新增和刪除這些服務,chkconfig 還可以使用 chkconfig –list apache2 列出為其配置了服務的執行級別

更改執行級別

[編輯 | 編輯原始碼]

可以透過使用執行級別編號呼叫 init 二進位制檔案來更改執行級別;例如,init 6 將重啟機器,而 init 0 將停止或關閉機器。init 的另一種選擇是 telinit。Init 和 telinit 執行相同的函式,只是它們接受的引數不同。

Teleinit/init 通常用於更改計算機的狀態而無需重啟它。有時需要將計算機的狀態更改為單使用者模式以進行系統維護。這可以使用 init 1 完成。在更改執行級別之前,最好讓當前登入的使用者知道。這可以使用 wall 命令完成。例如,wall “使用者將在 5 分鐘內登出...” 會將文字訊息傳送給所有登入的使用者。

如果您需要確定當前的執行級別,您可以執行命令 “runlevel”。要更改執行級別,請使用上面說明的 init 命令。執行級別也可以透過以下命令更改

  • halt - 停止系統,
  • reboot - 重啟系統,
  • shutdown - 將在指定時間或指定時間間隔後停止系統。該命令也可以用來安排重啟。shutdown 命令也可以接收在系統控制檯上登入的任何使用者都可以看到的一條文字訊息。例如
  • shutdown -h now - 將立即停止系統,
  • shutdown -h +10 - 系統將在 10 分鐘後停止 - 將在 10 分鐘後停止系統,
  • shutdown -r 14:30 - 系統將在 14:30 重啟
  • shutdown -c - 將取消任何已安排的關閉或重啟

啟動和停止服務

[編輯 | 編輯原始碼]

您也可以在執行時停止和啟動服務。在基於 Debian 的系統上,可以透過使用適當的引數直接呼叫啟動指令碼,即 start 用於啟動服務,stop 用於停止服務。

在 Ubuntu 上,可以執行

# /etc/init.d/apache2 stop

# /etc/init.d/apache2 start

啟動或停止 Apache 伺服器

在基於 Red Hat 的系統上,可以使用 service 命令來停止和啟動服務。

# service httpd start

# service httpd stop

啟動或停止 Apache 伺服器

這些命令也可以用來重新載入服務配置檔案,以使服務實現可能已進行的任何配置更改。例如

# /etc/init.d/apache2 reload

# service http reload

需要注意的是,並非所有服務都支援重新載入配置檔案的功能。



使用的檔案、術語和實用程式

  • /etc/inittab
  • shutdown
  • init
  • /etc/init.d
  • telinit


上一章 | 下一章

華夏公益教科書