Linux(入門基礎):109---systemd相對於services服務類型的配置文件

一、配置文件

我們知道systemd的所管理服務的配置文件大部分放置於/usr/lib/systemd/system/目錄中,但是該目錄的文件主要是原本軟件所提供的設置,建議不要修改。如果你想要修改,最好去修改/etc/systemd/system/目錄的內容。不過如何修改是根據自己個人的設置而選擇的

二、配置文件修改舉例

我們拿vsftpd.service服務來舉例

  • /usr/lib/systemd/system/vsftpd.service文件:官方發佈的默認配置文件
  • /etc/systemd/vsftpd.service.d/custom.conf配置文件:在/etc/systemd/下面建立與配置文件相同文件名的目錄,但是要加上.d擴展名,然後在該目錄下建立配置文件即可,配置文件的擴展名最好爲.conf。在這個xxx.d目錄下的文件會【累加其他設置】到/usr/lib/systemd/system/vsftpd.service文件中去
  • /etc/systemd/system/vsftpd.service.wants/目錄:此目錄內的文件爲鏈接文件,設置依賴服務的鏈接,意思是啓動vsftpd.service服務之後,該目錄下面的服務也會被啓動
  • /etc/systemd/system/vsftpd.service.requires/目錄:此目錄內的文件爲鏈接文件,設置依賴服務的鏈接。意思是啓動vsftpd.service服務之前,該目錄下面的服務會被提前啓動

三.service服務配置文件的內容格式

  • 我們以ssd.service文件爲例

文件內容被分爲三部分:

  • [Unit]部分:unit 本身的說明,以及與其他相依 daemon 的設定,包括在什麼服務之後才啓動此 unit 之類的設定值
  • [Service], [Socket], [Timer], [Mount], [Path]部分不同的 unit type 就得要使用相對應的設定項目。 這個項目內主要在規範服務啓動的腳本、環境配置文件檔名、重新啓動的方式
  • [Install]部分這個項目就是將此unit 安裝到哪個target 裏面去

文件內容的注意事項

  • 設置的項目是可以重複的,且後面的項目會替換掉前面的項目,例如可以出現兩個After在配置文件中,後面的After會替換掉前面的After
  • 如果一個項目後面什麼都沒有代表爲空。例如:After=
  • 1、yes、true、on可以代表是。0、no、false、off可以代表否
  • 開頭爲#或;的那一行,爲註釋

[Unit]部分的項目有

Description 使用 systemctl list-units 時,會輸出給管理員看的簡易說明, systemctl status 輸出的此服務的說明
Documentation 提供管理員能夠進行進一步的文件查詢的功能,提供的文件可以是如下的資料Documentation=http://www.... 或Documentation=man:sshd(類似) 或 Documentation=file:/etc/...
After 說明此 unit 是在哪個 daemon 啓動之後才啓動的意思,基本上僅是說明服務啓動的順序而已, 並沒有強制要求裏頭的服務一定要啓動後此 unit 才能啓動
Before 與 After 的意義相反,是在什麼服務啓動前最好啓動這個服務。不過這僅是規範服務啓動 的順序,並非強制要求
Requires 明確的定義此 unit 需要在哪個 daemon 啓動後才能夠啓動!就是設定相依服務!如果在此項 設定的前導服務沒有啓動,那麼此 unit 就不會被啓動!
Wants 規範的是這個 unit 之後最好還要啓動什麼服務比較好的意思,不過,並 沒有明確的規範,主要的目的是希望建立讓使用者比較好操作的環境。 因此,這個 Wants 後面接的服務如果沒有啓動,其實不會影響到這個 unit 本身
Conflicts

代表衝突的服務!即這個項目後面接的服務如果有啓動,那麼我們這個 unit 本身就不能啓動! 我們 unit 有啓動,則此項目後的服務就不能啓動

[Service]部分的項目有

Type  
EnvironmentFile  
ExecStart  
ExecStop  
ExecReload  
Restart  
RemainAfterExit  
TimeoutSec  
KillMode  
RestartSec  

[Install]部分的項目有

WantedBy 這個設定後面接的大部分是 *.target unit,說明此 unit 附掛在哪一個 target unit 底下 ,一般來說,大多的服務性質的 unit 都是附掛在 multi-user.target 下
Also 當目前這個 unit 本身被 enable 時,Also 後面接的 unit 也 enable 的意思,也就是具有相依性的 服務可以寫在這裏
Alias 運行一個鏈接別名的意思。當systemctl  enable相關的服務時,則此服務會進行鏈接文件的建立。以muli-user.target爲例,這個服務是用來作爲默認操作環境default.target的使用,因此當你設置用成defalut.target時,這個/etc/systemd/system/default.target就會鏈接到/usr/lib/systemd/system/multi-user.target
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章