如何弄清 Linux 系統執行何種系統管理程式
雖然我們經常聽到系統管理器這詞,但很少有人深究其確切意義。現在我們將向你展示其區別。
我會盡自己所能來解釋清楚一切。我們大多都知道 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
相關文章
- 作業系統何時執行?作業系統
- Linux系統透過CrossOver執行windows系統exe程式LinuxROSWindows
- Linux系統管理賬號分為幾種?有何區別?Linux
- LINUX系統中程式如何管理控制(一)Linux
- Linux如何檢視系統和程式的執行狀態?Linux
- Linux系統管理之程式管理Linux
- Linux系統管理-系統概述Linux
- Java程式執行系統命令Java
- Linux系統執行命令方法Linux
- Linux 系統執行級別Linux
- Linux系統執行級別Linux
- 為何你的系統不能穩定執行?
- Mac系統程式如何有效管理?Mac
- 【linux】系統程式設計-5-執行緒Linux程式設計執行緒
- Linux系統程式設計(27)——執行緒控制Linux程式設計執行緒
- Linux是什麼系統?Linux系統有何優勢?Linux
- Linux系統管理-工作管理(後臺程式管理)Linux
- 【Linux】Linux作業系統 程式管理Linux作業系統
- linux系統管理Linux
- linux系統中怎麼中執行jar包?linux系統中執行jar包的方法LinuxJAR
- Linux系統程式設計(28)——執行緒間同步Linux程式設計執行緒
- 從U盤執行Linux作業系統的三種方法Linux作業系統
- 圖書管理系統——執行及總結
- Linux系統裡的程式管理(轉)Linux
- win系統如何在mac上執行Mac
- Solaris如何改變系統執行級
- Linux系統Shell指令碼如何執行?linux運維繫統工程師Linux指令碼運維工程師
- 【作業系統】程式與執行緒作業系統執行緒
- ERP系統與CRM系統有何區別?進行整合有何作用?
- 作業系統中的執行緒種類作業系統執行緒
- 企業專案管理系統是何?專案管理
- Linux系統安裝執行.AppImage檔案的兩種執行方法介紹LinuxAPP
- 在Linux中,如何進行系統更新和補丁管理?Linux
- 告警系統郵件引擎 執行告警系統
- 在Linux中,如何在Linux中進行系統映象管理?Linux
- Linux系統磁碟管理Linux
- Linux系統管理命令Linux
- 極小Linux系統有何妙用Linux