歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux基礎教程:最簡明扼要的Systemd教程,只需十分鐘

Linux基礎教程:最簡明扼要的Systemd教程,只需十分鐘

日期:2017/2/25 10:33:27   编辑:Linux教程

啟動及服務

大多數主流發行版要麼已經采用 Systemd,要麼即將在下個發布中采用(如 Debian 和 Ubuntu)。在本教程中,我們使用 Fedora 21(該發行版已經是 Systemd 的優秀實驗場地)的一個預覽版進行演示,但不論您用哪個發行版,要用到的命令和注意事項都應該是一樣的。這是 Systemd 的一個加分點:它消除了不同發行版之間許多細微且瑣碎的區別。

在終端中輸入 ps ax | grep systemd,看到第一行,其中的數字 1 表示它的進程號是1,也就是說它是 Linux 內核發起的第一個程序。因此,內核一旦檢測完硬件並組織好了內存,就會運行 /usr/lib/systemd/systemd 可執行程序,這個程序會按順序依次發起其他程序。(在還沒有 Systemd 的日子裡,內核會去運行 /sbin/init,隨後這個程序會在名為 SysVinit 的系統中運行其余的各種啟動腳本。)

Systemd 的核心是一個叫單元 (unit)的概念,它是一些存有關於服務(service)(在運行在後台的程序)、設備、掛載點、和操作系統其他方面信息的配置文件。Systemd 的其中一個目標就是簡化這些事物之間的相互作用,因此如果你有程序需要在某個掛載點被創建或某個設備被接入後開始運行,Systemd 可以讓這一切正常運作起來變得相當容易。(在沒有 Systemd 的日子裡,要使用腳本來把這些事情調配好,那可是相當丑陋的。)要列出您 Linux 系統上的所有單元,輸入以下命令:

  1. systemctllist-unit-files

現在,systemctl 是與 Systemd 交互的主要工具,它有不少選項。在單元列表中,您會注意到這兒有一些格式化:被使能(enabled)的單元顯示為綠色,被禁用(disabled)的顯示為紅色。標記為“static”的單元不能直接啟用,它們是其他單元所依賴的對象。若要限制輸出列表只包含服務,使用以下命令:

  1. systemctllist-unit-files --type=service

注意,一個單元顯示為“enabled”,並不等於對應的服務正在運行,而只能說明它可以被開啟。要獲得某個特定服務的信息,以 GDM (Gnome Display Manager) 為例,輸入以下命令:

  1. systemctl status gdm.service

這條命令提供了許多有用的信息:一段給人看的服務描述、單元配置文件的位置、啟動的時間、進程號,以及它所從屬的 CGroups(用以限制各組進程的資源開銷)。

如果您去查看位於 /usr/lib/systemd/system/gdm.service 的單元配置文件,您可以看到各種選項,包括要被運行的二進制文件(“ExecStart”那一行),相沖突的其他單元(即不能同時進入運行的單元),以及需要在本單元執行前進入運行的單元(“After”那一行)。一些單元有附加的依賴選項,例如“Requires”(必要的依賴)和“Wants”(可選的依賴)。

此處另一個有趣的選項是:

  1. Alias=display-manager.service

當您啟動 gdm.service 後,您將可以通過 systemctl status display-manager.service 來查看它的狀態。當您知道有顯示管理程序 (display manager)在運行並想對它做點什麼,但您不關心那究竟是 GDM,KDM,XDM 還是什麼別的顯示管理程序時,這個選項會非常有用。

使用 systemctl status 命令後面跟一個單元名,來查看對應的服務有什麼情況。

使用 systemctl status 命令後面跟一個單元名,來查看對應的服務有什麼情況。

沒有 Systemd 的生活?

如果您就是完全不能接受 Systemd,您仍然有一些主流發行版中的選擇。尤其是 Slackware,作為歷史最為悠久的發行版,目前還沒有做出改變,但它的主要開發者並沒有將其從未來規劃中移除。一些不出名的發行版也在堅持使用 SysVinit 。

但這又將持續多久呢?Gnome 正越來越依賴於 Systemd,其他的主流桌面環境也會步其後塵。這也是引起 BSD 社區一陣恐慌的原因:Systemd 與 Linux 內核緊密相連,導致在某種程度上,桌面環境正變得越來越不可移植。一種折衷的解決方案也許會以 Uselessd (http://uselessd.darknedgy.net) 的形式到來:一種裁剪版的 Systemd,純粹專注於啟動和監控進程,而不消耗整個基礎系統。

若您不喜歡 Systemd,可以嘗試一下 Gentoo 發行版,它將 Systemd 作為初始化工具的一種選擇,但並不強制用戶使用 Systemd。

若您不喜歡 Systemd,可以嘗試一下 Gentoo 發行版,它將 Systemd 作為初始化工具的一種選擇,但並不強制用戶使用 Systemd。

Copyright © Linux教程網 All Rights Reserved