Centos系統中 Systemd 的Unit文件配置說明

Systemd使用單元(Units)來管理系統服務和程序。系統單元使用配置文件來控制其相關操作。單元配置文件有三種類型:默認單元配置文件,系統特定的單元配置文件和運行時的單元配置文件。

下面列出了三種類型的單元配置文件所在路徑:

  • 默認單元配置文件 - /usr/lib/systemd/system
  • 運行時的配置文件 - /run/systemd/system
  • 系統特定的配置文件 - /etc/systemd/system

默認單元配置文件,當安裝新軟件包時,在安裝過程中,單元配置文件會在/usr/lib/systemd/system目錄中生成。

運行時單元配置文件,分別在units啓動和停止時,會自動生成和刪除。

系統特定的配置文件包含定製的單元配置。通過這些配置文件,用戶可以覆蓋units的默認行爲。

當我們對系統服務和程序的狀態進行任何更改時,例如:start, stop, enable, 和disable時,systemd讀取並執行其單元配置文件。按照以下順序檢查單元配置文件。

系統特定的單元配置文件、運行時單元配置文件、默認單元配置文件。

例如,如果一個units配置文件在着三個路徑下面都存在,則僅使用 系統特定的配置文件 - /etc/systemd/system

Unit配置文件書寫格式

一個單元配置文件包含控制該單元的所有必需信息,例如;啓動Units文件的路徑,在Units之前和之後需要啓動的 service/units 的名稱,文檔、手冊的位置,依賴項信息,衝突信息等。

Unit配置文件中的信息通常分爲三部分。[Unit],[Type], [Install]

下面尋找一個Unit配置文件來解釋:
www.zjqiye.net/2016/0226/177817.shtml
www.techweb.com.cn/prnews/qiyenews/archives/44841.html
www.techweb.com.cn/prnews/qiyenews/archives/42148.html

[root@localhost ~]# cat /usr/lib/systemd/system/sshd.service 
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.target
Wants=sshd-keygen.target

[Service]
Type=notify
EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

Centos7 中 Systemd 的Unit文件配置說明Centos7 中 Systemd 的Unit文件配置說明

Unit部分

該部分通常包含 描述、文檔、與其他程序依賴的設置、包括在什麼服務 之前 或者 之後 啓動該Units的設置等。

Description: 該語句提供簡要的描述。可以在systemctl list-units或者systemctl status [Units]時看到描述。

Documentation: 該語句提供手冊(幫助文檔)頁面的位置以及訪問手冊頁面的命令

After: 該語句列出了在該單元之後應激活的單元。僅僅是規範服務啓動的順序,並沒有強制要求啓動。

Before: 該語句列出了在該單元之前應激活的單元。僅僅是規範服務啓動的順序,並沒有強制要求啓動。

Wants: 定義該單元啓動之後還需要啓動哪些unit。

Requires: 明確了定義該單元需要在哪個單元啓動之前才能啓動,如果前面的unit沒有啓動,那麼該unit也不會被啓動。

Conflicts: 該語句列出了在啓動該單元之前必須停止的單元/服務。

一個單元的After/Before語句定義了該單元應該啓動的順序。一個單元的want/Requires語句定義了該單元的依賴關係。

Type部分

該部分表示Unit的類型。類型有[Service],[Socket],[Timer],[Mount],[Path]等類型,本文中使用的是sshd.service當例子,所以這邊就使用[Service]類型來介紹。

下面列舉常用語句:
Type : 表示啓動的類型,有以下幾種類型:simple爲默認值、forking、oneshot等類型。
EnvironmentFile: 可以有多個該語句、後面跟配置文件。
ExecStart: 後面接啓動的語句
ExecStop: 後面接停止服務的語句
ExecReload: 後面接重啓服務的語句
KillMode: 該語句如果是process,當終止進程時,它會終止主程序。如果時none時,則不會關閉程序。

Install部分

該部分時將此Unit安裝到哪一個target中去。常用會安裝在multi-user.target

WantedBy: 自動啓動該Unit的Target名稱。例如,如果在此語句中看到multi-user.target,則意味着當系統進入“multi-user.target”運行級別時,此Unit將自動啓動。

可以看到,當執行systemctl enable sshd.service時,會將sshd.service從/usr/lib/systemd/system目錄中創建超鏈接到/etc/systemd/system/multi-user.target.wants下面。
Centos7 中 Systemd 的Unit文件配置說明Centos7 中 Systemd 的Unit文件配置說明

總結

Systemd使用單元(Units)來管理系統服務和程序。系統單元使用配置文件來控制其相關操作。單元配置文件有三種類型:默認單元配置文件,系統特定的單元配置文件和運行時的單元配置文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章