溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux的運行級別與目標怎么設置

發布時間:2022-01-27 15:43:31 來源:億速云 閱讀:152 作者:iii 欄目:開發技術
# Linux的運行級別與目標怎么設置

## 1. 運行級別與目標的概念解析

### 1.1 傳統SysVinit的運行級別
Linux運行級別(Runlevel)是SysVinit系統中的一個核心概念,用于定義系統在不同狀態下應該啟動哪些服務。傳統Linux系統定義了7個標準運行級別:

- **0** - 停機(Halt)
- **1** - 單用戶模式(Single-user mode)
- **2** - 多用戶模式(無網絡)
- **3** - 完整的多用戶模式(命令行界面)
- **4** - 保留未使用
- **5** - 圖形界面模式
- **6** - 重啟

### 1.2 Systemd的目標單元
現代Linux發行版(如RHEL 7+/Ubuntu 16.04+)采用systemd作為初始化系統,引入了"目標"(target)概念替代傳統運行級別。目標通過單元文件定義,實質上是特定服務的組合:

| 傳統運行級別 | Systemd目標          | 說明                     |
|--------------|----------------------|--------------------------|
| 0            | poweroff.target      | 關閉系統                 |
| 1, S, single | rescue.target        | 緊急救援模式             |
| 2            | multi-user.target    | 多用戶模式(無圖形)     |
| 3            | multi-user.target    | 完整多用戶模式           |
| 4            | multi-user.target    | 保留(通常同級別3)      |
| 5            | graphical.target     | 圖形界面模式             |
| 6            | reboot.target        | 重啟系統                 |

## 2. 查看當前運行狀態

### 2.1 傳統系統查詢方法
```bash
# 查看當前運行級別
$ runlevel
N 5  # 前一個級別N(無),當前級別5

# 列出所有服務在各運行級別的狀態
$ chkconfig --list

2.2 Systemd系統查詢方法

# 查看默認目標
$ systemctl get-default
graphical.target

# 查看當前活動目標
$ systemctl list-units --type=target
UNIT                   LOAD   ACTIVE SUB    DESCRIPTION
basic.target           loaded active active Basic System
graphical.target       loaded active active Graphical Interface
multi-user.target      loaded active active Multi-User System

# 查看目標依賴關系(以圖形界面為例)
$ systemctl show --property "Requires" --property "Wants" graphical.target

3. 運行級別/目標的配置方法

3.1 臨時切換運行模式

傳統系統:

$ init 3  # 切換到多用戶模式

Systemd系統:

$ sudo systemctl isolate multi-user.target  # 切換到命令行模式
$ sudo systemctl isolate graphical.target  # 切換回圖形界面

3.2 永久修改默認目標

方法1:使用systemctl命令

$ sudo systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

方法2:手動創建符號鏈接

$ sudo ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

3.3 自定義目標配置

  1. 創建自定義目標文件:
$ sudo vi /etc/systemd/system/custom.target
[Unit]
Description=Custom Environment
Requires=multi-user.target
After=multi-user.target
  1. 設置依賴關系:
$ sudo systemctl add-wants custom.target sshd.service
  1. 啟用自定義目標:
$ sudo systemctl enable custom.target

4. 服務管理與運行級別

4.1 傳統服務管理

# 設置服務在特定級別啟動
$ chkconfig --level 35 httpd on

# 查看服務狀態
$ service httpd status

4.2 Systemd服務管理

# 啟用服務隨目標啟動
$ sudo systemctl enable httpd

# 指定服務僅在特定目標啟動
$ sudo systemctl add-wants multi-user.target httpd.service

# 查看服務依賴
$ systemctl list-dependencies httpd.service

5. 緊急救援模式操作

5.1 進入救援模式

方法1:啟動時修改內核參數 1. 在GRUB菜單按’e’編輯啟動參數 2. 在linux行末尾添加systemd.unit=rescue.target 3. 按Ctrl+X啟動

方法2:運行時切換

$ sudo systemctl rescue
Warning: Stopping user services is usually not advised during rescue mode.

5.2 緊急操作示例

# 重新掛載文件系統為讀寫
$ mount -o remount,rw /

# 修復損壞的服務配置
$ journalctl -xb  # 查看啟動日志
$ systemctl daemon-reload

6. 實戰案例與排錯

案例1:圖形界面無法啟動

現象:系統啟動后停留在命令行界面

排查步驟: 1. 檢查當前目標:

   systemctl get-default
  1. 驗證顯示管理器狀態:
    
    systemctl status gdm  # GNOME顯示管理器
    
  2. 查看Xorg日志:
    
    cat /var/log/Xorg.0.log | grep -i error
    

案例2:服務未按預期啟動

解決方案:

# 檢查服務是否啟用
systemctl is-enabled nginx

# 查看服務依賴關系
systemctl list-dependencies nginx.service

# 手動觸發服務啟動
systemctl start nginx

7. 高級配置技巧

7.1 創建自定義運行級別

  1. 復制現有目標作為模板:
cp /usr/lib/systemd/system/multi-user.target /etc/systemd/system/my-runlevel.target
  1. 修改依賴關系:
[Unit]
Description=My Custom Runlevel
Requires=basic.target
Conflicts=rescue.service rescue.target
After=basic.target rescue.service rescue.target
AllowIsolate=yes
  1. 注冊新目標:
systemctl daemon-reload
systemctl enable my-runlevel.target

7.2 目標切換鉤子腳本

創建服務單元在目標切換時執行操作:

# /etc/systemd/system/target-changed.service
[Unit]
Description=Target Changed Hook
Before=multi-user.target graphical.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/target-change-script.sh

[Install]
WantedBy=multi-user.target graphical.target

8. 系統兼容性說明

8.1 不同發行版差異

發行版 初始化系統 備注
RHEL/CentOS 6 SysVinit 使用/etc/inittab配置
RHEL/CentOS 7+ systemd 兼容runlevel命令
Ubuntu 14.04 Upstart 使用/etc/init/配置
Ubuntu 16.04+ systemd 完全轉向systemd

8.2 兼容性命令對照表

傳統命令 systemd等效命令
service start systemctl start
chkconfig –list systemctl list-unit-files
telinit systemctl isolate

9. 最佳實踐建議

  1. 生產服務器推薦:默認使用multi-user.target以減少資源開銷
  2. 桌面環境graphical.target應配置為按需啟動顯示管理器
  3. 服務管理:使用systemd-analyze blame識別啟動耗時長的服務
  4. 日志記錄:定期檢查journalctl -u systemd-logind獲取登錄事件

10. 總結

Linux系統的運行模式管理經歷了從傳統運行級別到現代目標的演變。理解這兩種機制對于系統管理員至關重要:

  1. 傳統運行級別提供簡單的狀態切換,適合老舊系統維護
  2. systemd目標機制更加靈活,支持并行啟動和精確依賴控制
  3. 關鍵操作包括:
    • 使用systemctl isolate臨時切換狀態
    • 通過systemctl set-default修改默認目標
    • 利用systemctl list-dependencies分析服務關系

隨著Linux系統的發展,建議管理員逐步掌握systemd的管理方法,同時保持對傳統運行級別的了解以應對特殊情況。 “`

該文檔共計約2400字,采用Markdown格式編寫,包含: - 層級分明的章節結構 - 代碼塊形式的命令示例 - 對比表格展示關鍵差異 - 實戰案例和解決方案 - 兼容性說明和最佳實踐 - 格式化的命令行操作示例

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女