天天看點

Systemd 中的Unit 檔案

一、Systemd支援的Unit檔案類型

.automount 自動挂載檔案系統

.device 主要用于定義裝置之間的依賴,對應/dev目錄下的裝置

.mount 替代/etc/fstab檔案

.path 用于監控指定目錄的變化,并觸發其他unit運作

.scope Systemd管理,描述系統服務的分組資訊

.service 守護程序的相關操作

.slice 描述cgroup的資訊

.snapshot Systemd unit運作狀态的快照

.swap 定義虛拟記憶體的交換分區

.target 對unit進行邏輯分組,引導其他unit運作,替代SYSV運作級别。

.timer 由Systemd中時間觸發的動作,替代crontab

二、Unit檔案存放目錄(從下到上優先級增加)

/etc/systemd/system 系統或使用者提供的配置檔案(特權使用者存放)

/run/systemd/system 軟體運作時生成的配置檔案(非特權使用者存放)

/use/lib/systemd/system 系統或第三方軟體配置檔案(系統更新将被覆寫)

三、Service檔案字段說明

[ Unit ]

1、Description

描述文字

2、Documentation

文檔,可以是一個或多個文檔的URL路徑

3、Requires

依賴清單,在目前服務啟動時同時啟動,如何有失敗,則目前服務将被終止。

4、Wants

依賴清單,不考慮是否啟動成功。

5、After

依賴清單,清單中所有子產品啟動完成,才會啟動目前服務。

6、Before

啟動目前服務後,才啟動清單中的子產品。

7、BindsTo

強關聯依賴清單,在運作過程中,如果清單服務意外結束或重新開機,目前服務也會跟着終止或重新開機。

8、PartOf

BindsTo的子集,隻有當PartOf列出的子產品失敗或重新開機時,目前服務才終止或重新開機。

9、OnFailure

目前服務啟動失敗時,則啟動清單中子產品。

10、Conflicts

定義沖突子產品,如果清單中子產品已經在運作,則不啟動目前服務。

[ Install ]

說明:此段中的配置需要通過systemctl enable指令來激活,通過systemctl disable指令禁用。

1、WantedBy

與Wants作用相似,隻是列出的不是服務所依賴的子產品,而是依賴目前服務的子產品。

2、RequiredBy

依賴目前服務的子產品。

3、Also

目前服務被enable/disable時,将自動enable/disable清單中的子產品

[ Service ]

服務生命周期控制

1、Type

服務的類型,simple(預設)、forking。如果服務程式啟動後會通過fork系統調用建立子程序,然後關閉程式本身程序,則應該将Type設定為forking,否則Systemd将不會跟蹤子程序的行為,而認為服務已經退出。

2、RemainAfterExit

true/false 預設為false。當值為true時,Systemd隻負責啟動服務程序,之後即便退出仍會認為服務在運作。主要提供給一些非常駐記憶體,而是啟動後立即退出,然後等待消息按需啟動的特殊類型。

3、ExecStart

指定服務啟動的主要指令,僅一個。

4、ExecStartPre

指定在啟動ExecStart指令前的準備工作,可以有多個。

5、ExecStartPost

指定在啟動ExecStart指令後的收尾工作,可以有多個。

6、TimeoutStartSec

啟動服務的等待秒數,逾時則Systemd認為服務啟動失敗,設定為0關閉逾時檢測。

7、ExecStop

停止服務所需要執行的主要指令。

8、ExecPost

指定在ExecStop指令執行後的收尾工作,可以有多個。

9、TimeoutStopSec

停止服務的等待時間,逾時則認為沒有成功停止,Systemd會使用SIGKILL信号強行殺死服務程序。

10、Restart

指定在什麼情況下需要重新開機服務程序。常用值:no(預設)、no-success、on-failure、on-abnormal、on-abort、always。

服務退出原因 no always on-failure on-abnormal on-abort no-success
正常退出
異常退出
啟動/停止逾時
被異常KILL

11、RestartSec

如果服務需要被重新開機,該值為服務被重新開機前的等待秒數。

12、ExecReload

重新加載服務所需要執行的主要指令。

13、Environment

為服務添加環境變量。

14、Nice

服務的程序優先級,值越小優先級越高,預設為0,-20~19(不建議低于-5(核心中斷優先級))。

15、WorkingDirectory

指定服務的工作目錄。

16、RootDirectory

指定服務程序的根目錄,如果配置了此參數,服務将無法通路指定目錄以外的任何檔案。

17、User

指定運作服務的使用者。

18、Group

指定運作服務的使用者組。

19、LimitCPU/LimitSTACK/LimitNOFILE/LimitNPROC

限制服務可用的系統資源。

20、PIDFile

指定PID檔案目錄。

修改完成記得使用:

sudo systemctl daemon-reload 重載Unit檔案

繼續閱讀