Centos系統中 Systemd 的Unit檔案配置說明

夢共裡醉發表於2021-12-15
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配置檔案來解釋:

[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檔案配置說明

prnews.techweb.com.cn/qiyenews/archives/66843.html

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)來管理系統服務和程式。系統單元使用配置檔案來控制其相關操作。單元配置檔案有三種型別:預設單元配置檔案,系統特定的單元配置檔案和執行時的單元配置檔案。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2847765/,如需轉載,請註明出處,否則將追究法律責任。

相關文章