當前位置:
首頁 > 知識 > 如何弄清 Linux 系統運行何種系統管理程序

如何弄清 Linux 系統運行何種系統管理程序

如何弄清 Linux 系統運行何種系統管理程序

打開今日頭條,查看更多精彩圖片

編譯自: https://www.2daygeek.com/how-to-determine-which-init-system-manager-is-running-on-linux-system/

作者: Prakash Subramanian

譯者: runningwater

雖然我們經常聽到 系統管理器(System Manager)這詞,但很少有人深究其確切意義。現在我們將向你展示其區別。

我會盡自己所能來解釋清楚一切。我們大多都知道 System V 和 systemd 兩種系統管理器。 System V (簡寫 SysV) 是老式系統所使用的古老且傳統的初始化系統及系統管理器。

Systemd 是全新的初始化系統及系統管理器,並且已被大部分主流 Linux 發行版所採用。

Linux 系統中主要有三種有名而仍在使用的初始化系統。大多數 Linux 發行版都使用其中之一。


什麼是初始化系統管理器?

在基於 Linux/Unix 的操作系統中,init (初始化的簡稱) 是內核啟動系統時開啟的第一個進程。

它持有的進程 ID(PID)號為 1,其在後台一直運行著,直到關機。

init 會查找 /etc/inittab 文件中相應配置信息來確定系統的運行級別,然後根據運行級別在後台啟動所有的其它進程和應用。

作為 Linux 啟動過程的一部分,BIOS、MBR、GRUB 和內核進程在此進程之前就被激活了。

下面列出的是 Linux 的可用運行級別(存在七個運行級別,從 0 到 6)。

  • 0:停機
  • 1:單用戶模式
  • 2:多用戶,無 NFS(LCTT 譯註:NFS 即 Network File System,網路文件系統)
  • 3:全功能多用戶模式
  • 4:未使用
  • 5:X11(GUI – 圖形用戶界面)
  • 6:重啟

下面列出的是 Linux 系統中廣泛使用的三種初始化系統。

  • System V (Sys V):是類 Unix 操作系統傳統的也是首款初始化系統。
  • Upstart:基於事件驅動,是 /sbin/init 守護進程的替代品。
  • Systemd:是一款全新的初始化系統及系統管理器,它被所有主流的 Linux 發行版實現/採用,以替代傳統的 SysV 初始化系統。

什麼是 System V (Sys V)?

System V(Sys V)是類 Unix 操作系統傳統的也是首款初始化系統。init 是系統由內核啟動期間啟動的第一個進程,它是所有進程的父進程。

起初,大多數 Linux 發行版都使用名為 System V(SysV)的傳統的初始化系統。多年來,為了解決標準版本中的設計限制,發布了幾個替代的初始化系統,例如 launchd、Service Management Facility、systemd 和 Upstart。

但只有 systemd 最終被幾個主流 Linux 發行版所採用,以替代傳統的 SysV。


什麼是 Upstart?

Upstart 基於事件驅動,是 /sbin/init 守護進程的替代品。用來在啟動期間控制任務和服務的啟動,在關機期間停止它們,及在系統運行過程中監視它們。

它最初是為 Ubuntu 發行版開發的,但也可以在所有的 Linux 發行版中部署運行,以替代古老的 System V 初始化系統。

它用於 Ubuntu 9.10 到 14.10 版本和基於 RHEL 6 的系統中,之後的被 systemd 取代了。


什麼是 systemd?

systemd 是一款全新的初始化系統及系統管理器,它被所有主流的 Linux 發行版實現/採用,以替代傳統的 SysV 初始化系統。

systemd 與 SysV 和 LSB(LCTT 譯註:Linux Standards Base) 初始化腳本兼容。它可以作為 SysV 初始化系統的直接替代品。其是內核啟動的第一個進程並佔有數字 1 的 PID,它是所有進程的父進程。

Fedora 15 是第一個採用 systemd 而不是 upstart 的發行版。 systemctl 是一款命令行工具,它是管理 systemd 守護進程/服務(如 start、restart、stop、enable、disable、reload 和 status)的主要工具。

systemd 使用 .service 文件而不是(SysV 初始化系統使用的) bash 腳本。systemd 把所有守護進程按順序排列到自己 Cgroups (LCTT 譯註:Cgroups 是 control groups 的縮寫,是 Linux 內核提供的一種可以限制、記錄、隔離進程組所使用的物理資源,如:cpu、memory、IO 等的機制。最初由 Google 的工程師提出,後來被整合進 Linux 內核。Cgroups 也是 LXC 為實現虛擬化所使用的資源管理手段,可以說沒有 cgroups 就沒有 LXC)中,所以通過查看 /cgroup/systemd 文件就可以查看系統層次結構。


在 Linux 上如何識別出系統管理器

在系統上運行如下命令來查看運行著什麼系統管理器:

(LCTT 譯註:原文繁冗啰嗦,翻譯時進行了裁剪整理。)


方法 1:使用 ps 命令

ps – 顯示當前進程快照。ps 會顯示選定的活動進程的信息。其輸出不能確切區分出是 System V(SysV) 還是 upstart,所以我建議使用其它方法。


# ps -p1 | grep "init|upstart|systemd"

1 ? 00:00:00 init

方法 2:使用 rpm 命令

RPM 即 Red Hat Package Manager (紅帽包管理),是一款功能強大的 安裝包管理 命令行工具,在基於 Red Hat 的發行版中使用,如 RHEL、CentOS、Fedora、openSUSE 和 Mageia。此工具可以在系統/服務上對軟體進行安裝、更新、刪除、查詢及驗證等操作。通常 RPM 文件都帶有 .rpm 後綴。

RPM 會使用必要的庫和依賴庫來構建軟體,並且不會與系統上安裝的其它包衝突。


# rpm -qf /sbin/init

SysVinit-2.86-17.el5

方法 3:使用 /sbin/init 文件

/sbin/init 程序會將根文件系統從內存載入或切換到磁碟。

這是啟動過程的主要部分。這個進程開始時的運行級別為 「N」(無)。/sbin/init 程序會按照 /etc/inittab 配製文件的描述來初始化系統。

# /sbin/init --version

init (upstart 0.6.5)

Copyright (C) 2010 Canonical Ltd.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


via: https://www.2daygeek.com/how-to-determine-which-init-system-manager-is-running-on-linux-system/

作者: Prakash Subramanian 選題: lujun9972 譯者: runningwater 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出

點擊「了解更多」可訪問文內鏈接

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux技術 的精彩文章:

介紹 Fedora 上的 Swift
如何在 Linux 下鎖住鍵盤和滑鼠而不鎖屏

TAG:Linux技術 |