CentOS7.4 使用 systemctl 添加自定義服務

1、簡介

Centos7.4開機第一個程序從init徹底換成了systemd這種啓動方式,同centos 5 6已是實質差異。systemd是靠管理unit的方式來控制開機服務,開機級別等功能。 在/usr/lib/systemd/system目錄下包含了各類unit文件,有service後綴的服務unit,有target後綴的開機級別unit等,這裏介紹關於service後綴的文件。由於systemd在開機要想執行自啓動,都是經過這些*.service 的unit控制的,服務又分爲系統服務(system)和用戶服務(user)。nginx

系統服務:開機不登錄就能運行的程序(經常使用於開機自啓)。 用戶服務:須要登錄之後才能運行的程序。centos

2、配置文件說明:

[UNIT]
#服務描述
Description=Media wanager Service
#指定了在systemd在執行完那些target以後再啓動該服務
After=network.target

[Service]
#定義Service的運行類型,通常是forking(後臺運行)   
Type=forking

#定義systemctl start|stop|reload *.service 的執行方法(具體命令須要寫絕對路徑)
#注:ExecStartPre爲啓動前執行的命令
ExecStart=/opt/nginx/sbin/nginx
ExecReload=/opt/nginx/sbin/nginx -s reload
ExecStop=/opt/nginx/sbin/nginx -s stop

#建立私有的內存臨時空間
PrivateTmp=True

[Install]
#多用戶
WantedBy=multi-user.target
[Unit] 區塊:啓動順序與依賴關係

Description字段:給出當前服務的簡單描述。
Documentation 字段:給出文檔位置。
After 字段:若是network.target或sshd-keygen.service須要啓動,那麼sshd.service應該在它們以後啓動。
Before字段:定義sshd.service應該在哪些服務以前啓動。
注:After和Before字段只涉及啓動順序,不涉及依賴關係。

[Service] 區塊:啓動行爲

啓動命令
Type=forking是後臺運行的形式

ExecStart字段:定義啓動進程時執行的命令
ExecReload字段:重啓服務時執行的命令
ExecStop字段:中止服務時執行的命令

ExecStartPre字段:啓動服務以前執行的命令
ExecStartPost字段:啓動服務以後執行的命令
ExecStopPost字段:中止服務以後執行的命令

#注:全部的啓動設置以前,均可以加上一個連詞號(-),表示"抑制錯誤",即發生錯誤的時候,不影響其餘命令的執行。好比EnvironmentFile=-/etc/sysconfig/sshd(注意等號後面的那個連詞號),就表示即便/etc/sysconfig/sshd文件不存在,也不會拋出錯誤。
#注意:[Service]中的啓動、重啓、中止命令所有要求使用絕對路徑!

啓動類型
Type字段定義啓動類型。它能夠設置的值以下:
	simple(默認值):ExecStart字段啓動的進程爲主進程
	forking:ExecStart字段將以fork()方式啓動,此時父進程將會退出,子進程將成爲主進程(後臺運行)
	oneshot:相似於simple,但只執行一次,Systemd 會等它執行完,才啓動其餘服務
	dbus:相似於simple,但會等待 D-Bus 信號後啓動
	notify:相似於simple,啓動結束後會發出通知信號,而後 Systemd 再啓動其餘服務
	idle:相似於simple,可是要等到其餘任務都執行完,纔會啓動該服務。一種使用場合是爲讓該服務的輸出,不與其餘服務的輸出相混合


PrivateTmp=True表示給服務分配獨立的臨時空間


[Install] 服務安裝的相關設置,可設置爲多用戶



[Install] 區塊
Install 區塊,定義如何安裝這個配置文件,即怎樣作到開機啓動。
WantedBy字段:表示該服務所在的 Target。
Target的含義是服務組,表示一組服務。
WantedBy=multi-user.target指的是:sshd 所在的 Target 是multi-user.target。

#這個設置很是重要,由於執行systemctl enable sshd.service命令時,sshd.service的一個符號連接,就會放在/etc/systemd/system目錄下面的multi-user.target.wants子目錄之中。
Systemd 有默認的啓動 Target。
重載系統服務:systemctl daemon-reload 
設置開機啓動:systemctl enable *.service 
啓動服務:systemctl start *.service 
中止服務:systemctl stop *.service 
重啓服務:systemctl reload *.service
相關文章
相關標籤/搜索