一、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檔案