Linux *.service文件詳解


什么是systemd service?

systemd service是一種以.service 結尾的配置文件,是一個專用於Linux操作系統的系統與服務管理器。簡單來說,用於后台以守護精靈(daemon)的形式運行程序。

 

systemd服務的內容主要分為三個部分,控制單元[Unit]的定義、服務[Service]的定義、以及[Install]安裝部分。

 

示例詳解

[Unit]

Description=httpd        #當前配置文件的描述信息

After=network.target     #表示當前服務是在那個服務后面啟動,一般定義為網絡服務啟動后啟動

 

[Service]

Type=forking             #定義啟動類型

ExecStart=/usr/local/apache/bin/apachectl start     #定義啟動進程時執行的命令

ExecReload=/usr/local/apache/bin/apachectl restart  #重啟服務時執行的命令

ExecStop=/usr/local/apache/bin/apachectl stop       #定義關閉進程時執行的命令

PrivateTmp=true                                     #是否分配獨立空間

 

[Install]

WantedBy=multi-user.target    #表示多用戶命令行狀態

 

字段詳解

[Unit]字段

這個字段主要給出服務描述、啟動順序和依賴關系。

 

字段說明

·         Description:給出當前服務的簡單描述。

·         Documentation:給出文檔位置。

·         After:表示在什么服務之后啟動。

·         Before:表示在什么服務之前啟動。

·         Wants:表示該服務和某服務存在某種弱依賴關系,即某服務停止運行或退出不影響該服務繼續運行。

·         Requires:則表示”強依賴”關系,即某服務停止運行或退出,改服務也必須停止運行。

 

After和Before只涉及啟動順序,不涉及依賴關系。

Wants與Requires只涉及依賴關系,與啟動順序無關,默認情況下是同時啟動的。

 

[Server]字段

這個字段主要給出服務的啟動行為,如何啟動、重啟、停止。

 

字段說明

·         Type:定義啟動類型。它可以設置的值如下:

o    simple(默認值):ExecStart字段啟動的進程為主進程。

o    forking:ExecStart字段將以fork()方式啟動,此時父進程將會退出,子進程將成為主進程。

o    oneshot:類似於simple,但只執行一次,Systemd會等它執行完,才啟動其他服務。

o    dbus:類似於simple,但會等待D-Bus信號后啟動。

o    notify:類似於simple,啟動結束后會發出通知信號,然后Systemd再啟動其他服務。

o    idle:類似於simple,但是要等到其他任務都執行完,才會啟動該服務。一種使用場合是為讓該服務的輸出,不與其他服務的輸出相混。

·         ExecStart:定義啟動進程時執行的命令,就是手動啟動時執行的命令。

·         ExecReload:重啟服務時執行的命令。

·         ExecStop:停止服務時執行的命令。

·         ExecStartPre:啟動服務之前執行的命令。

·         ExecStartPost:啟動服務之后執行的命令。

·         ExecStopPost:停止服務之后執行的命令。

·         KillMode:定義Systemd如何停止sshd服務。它可以設置的值如下:

o    control-group(默認值):當前控制組里面的所有子進程,都會被殺掉。

o    process:只殺主進程。

o    mixed:主進程將收到SIGTERM信號,子進程收到SIGKILL信號。

o    none:沒有進程會被殺掉,只是執行服務的stop命令。

·         Restart:定義了sshd退出后,Systemd的重啟方式。它可以設置的值如下:
對於守護進程,推薦設為on-failure。對於那些允許發生錯誤退出的服務,可以設為on-abnormal。

o    no(默認值):退出后不會重啟。

o    on-success:只有正常退出時(退出狀態碼為0),才會重啟。

o    on-failure:非正常退出時(退出狀態碼非0),包括被信號終止和超時,才會重啟。

o    on-abnormal:只有被信號終止和超時,才會重啟。

o    on-abort:只有在收到沒有捕捉到的信號終止時,才會重啟。

o    on-watchdog:超時退出,才會重啟。

o    always:不管是什么退出原因,總是重啟。

·         RestartSec:表示Systemd重啟服務之前,需要等待的秒數。

·         user:可以設置服務的用戶名。

·         WorkingDirectory:指定服務的安裝目錄。

 

[Install]字段

該字段定義如何安裝這個配置文件,即怎樣做到開機自啟。

 

字段說明:

·         WantedBy:表示該服務所在的Target。

 

Target的含義是服務組,表示一組服務。WantedBy=multi-user.target指的是服務所在的Target是multi-user.target

Systemd有默認的啟動Target。就是multi-user.target,在這個組里的所有服務,都將開機啟動。

 

查看multi-user.target包含的所有服務:

systemctl list-dependencies multi-user.target


免責聲明!

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



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