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配置文件來解釋:

[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文件配置說明


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

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)來管理系統服務和程序。系統單元使用配置文件來控制其相關操作。單元配置文件有三種類型:默認單元配置文件,系統特定的單元配置文件和運行時的單元配置文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM