Centos7 中 Systemd 的 Unit 文件配置說明
Systemd使用單元(Units)來管理系統(tǒng)服務(wù)和程序。系統(tǒng)單元使用配置文件來控制其相關(guān)操作。單元配置文件有三種類型:默認單元配置文件,系統(tǒng)特定的單元配置文件和運行時的單元配置文件。
下面列出了三種類型的單元配置文件所在路徑:
- 默認單元配置文件 - /usr/lib/systemd/system
- 運行時的配置文件 - /run/systemd/system
- 系統(tǒng)特定的配置文件 - /etc/systemd/system
默認單元配置文件,當安裝新軟件包時,在安裝過程中,單元配置文件會在/usr/lib/systemd/system目錄中生成。
運行時單元配置文件,分別在units啟動和停止時,會自動生成和刪除。
系統(tǒng)特定的配置文件包含定制的單元配置。通過這些配置文件,用戶可以覆蓋units的默認行為。
當我們對系統(tǒng)服務(wù)和程序的狀態(tài)進行任何更改時,例如:start, stop, enable, 和disable時,systemd讀取并執(zhí)行其單元配置文件。按照以下順序檢查單元配置文件。
系統(tǒng)特定的單元配置文件、運行時單元配置文件、默認單元配置文件。
例如,如果一個units配置文件在著三個路徑下面都存在,則僅使用 系統(tǒng)特定的配置文件 - /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
Unit部分
該部分通常包含 描述、文檔、與其他程序依賴的設(shè)置、包括在什么服務(wù) 之前 或者 之后 啟動該Units的設(shè)置等。
Description: 該語句提供簡要的描述??梢栽趕ystemctl list-units或者systemctl status [Units]時看到描述。
Documentation: 該語句提供手冊(幫助文檔)頁面的位置以及訪問手冊頁面的命令。
After: 該語句列出了在該單元之后應(yīng)激活的單元。僅僅是規(guī)范服務(wù)啟動的順序,并沒有強制要求啟動。
Before: 該語句列出了在該單元之前應(yīng)激活的單元。僅僅是規(guī)范服務(wù)啟動的順序,并沒有強制要求啟動。
Wants: 定義該單元啟動之后還需要啟動哪些unit。
Requires: 明確了定義該單元需要在哪個單元啟動之前才能啟動,如果前面的unit沒有啟動,那么該unit也不會被啟動。
Conflicts: 該語句列出了在啟動該單元之前必須停止的單元/服務(wù)。
一個單元的After/Before語句定義了該單元應(yīng)該啟動的順序。一個單元的want/Requires語句定義了該單元的依賴關(guān)系。
Type部分
該部分表示Unit的類型。類型有[Service],[Socket],[Timer],[Mount],[Path]等類型,本文中使用的是sshd.service當例子,所以這邊就使用[Service]類型來介紹。
下面列舉常用語句:
Type : 表示啟動的類型,有以下幾種類型:simple為默認值、forking、oneshot等類型。
EnvironmentFile: 可以有多個該語句、后面跟配置文件。
ExecStart: 后面接啟動的語句
ExecStop: 后面接停止服務(wù)的語句
ExecReload: 后面接重啟服務(wù)的語句
KillMode: 該語句如果是process,當終止進程時,它會終止主程序。如果時none時,則不會關(guān)閉程序。
Install部分
該部分時將此Unit安裝到哪一個target中去。常用會安裝在multi-user.target
WantedBy: 自動啟動該Unit的Target名稱。例如,如果在此語句中看到multi-user.target,則意味著當系統(tǒng)進入“multi-user.target”運行級別時,此Unit將自動啟動。
可以看到,當執(zhí)行systemctl enable sshd.service時,會將sshd.service從/usr/lib/systemd/system目錄中創(chuàng)建超鏈接到/etc/systemd/system/multi-user.target.wants下面。
本文轉(zhuǎn)載自微信公眾號「Linux就該這么學(xué)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Linux就該這么學(xué)公眾號。
圖片