1. 程式人生 > >[轉]CentOS7利用systemctl新增自定義系統服務

[轉]CentOS7利用systemctl新增自定義系統服務

原文:https://www.cnblogs.com/saneri/p/7778756.html

CentOS7自定義系統服務

CentOS7的服務systemctl指令碼存放在:/usr/lib/systemd/,有系統(system)和使用者(user)之分,需要開機不登陸就能執行的程式,存在系統服務裡,即:/usr/lib/systemd/system目錄下.
CentOS7的每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install] 

[Unit]部分主要是對這個服務的說明,內容包括Description和After,Description 用於描述服務,After用於描述服務類別
[Service]部分是服務的關鍵,是服務的一些具體執行引數的設定.
Type=forking是後臺執行的形式,
User=users是設定服務執行的使用者,
Group=users是設定服務執行的使用者組,
PIDFile為存放PID的檔案路徑,
ExecStart為服務的具體執行命令,
ExecReload為重啟命令,
ExecStop為停止命令,
PrivateTmp=True表示給服務分配獨立的臨時空間
注意:[Service]部分的啟動、重啟、停止命令全部要求使用絕對路徑,使用相對路徑則會報錯!
[Install]部分是服務安裝的相關設定,可設定為多使用者的

 

首先,使用systemctl start  [ 服務名(也是檔名) ] 可測試服務是否可以成功執行,如果不能執行則可以使用systemctl status [ 服務名(也是檔名) ]檢視錯誤資訊和其他服務資訊,然後根據報錯進行修改,直到可以start,如果不放心還可以測試restart和stop命令。

接著,只要使用systemctl enable xxxxx就可以將所編寫的服務新增至開機啟動即可。

例項:服務用於開機執行tomcat專案:

#vim /usr/lib/systemd/system/tomcat.service
 
[Unit]
Description=java tomcat project
After=tomcat.service
  
[Service]
Type=forking
User=users
Group=users
PIDFile=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecReload=
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target

  新增可執行許可權:

chmod 754 /usr/lib/systemd/system/tomcat.service

  設定為開機自啟動:

systemctl enable tomcat.service

  

常用指令(以tomcat服務為例):

啟動某服務
 
systemctl start   tomcat.service
 
停止某服務
 
systemctl stop   tomcat.service
 
重啟某服務
 
service tomcat   restart
 
systemctl restart   tomcat.service
 
使某服務自動啟動(如tomcat服務)
 
systemctl enable   tomcat.service
 
使某服務不自動啟動
 
systemctl disable   tomcat.service
 
檢查服務狀態
 
systemctl   status tomcat.service (服務詳細資訊)
 
systemctl   is-active tomcat.service(僅顯示是否Active)
 
顯示所有已啟動的服務
 
systemctl   list-units --type=service

  命令整理:
Systemctl start <單元>立即啟動單元
Systemctl stop <單元>立即關閉單元
Systemctl restart <單元>立即重啟單元
Systemctl reload <單元>重讀單元配置 (類似重新整理)
Systemctl status <單元> 輸出單元執行狀態
Systemctl is-enable <單元> 檢視單元是否自啟動
Systemctl enable <單元> 設定開機自啟
Systemctl disable <單元> 取消開機自啟
Systemctl is-active <單元>檢視單元是否正在執行

 

 

關閉防火牆firewall

Centos 7.x 中取消了iptables, 用firewall取而代之。要關閉防火牆並禁止開機啟動服務使用下面的命令:

 systemctl stop firewalld.service

systemctl disable firewalld.service