Centos7 systemctl服務腳本


systemd.service 參考文檔

RHEL6和之前的版本使用的初始進程是init,init是一個線性的啟動過程,一個接一個的啟動,比較慢;systemd則可以多進程啟動,速度提高很多。

  sevice:服務后台進程

  target:此類配置單元為其他配置單元進行邏輯分組。3級多用戶模式->multi-user.target,5級圖形化模式->graphical.target

自定義服務

  每個服務可以在/usr/lib/systemd/system下添加一個以.service結尾的文件

vim /usr/lib/systemd/system/zabbix_agentd.service 
# 添加以服務為名的service文件
[Unit]
Desciption=zabbix_agentd - zabbix monitor client
After=network.target
# 在network啟動后再啟動
#Before=xxx
# After Before不存在依賴關系,只是啟動順序

[Service]
User=zabbix
Group=zabbix
Type=forking
# 此服務以forking模式運行
PIDFile=/tmp/zabbix_agentd.pid
# PID文件存放位置
ExecStartPre=/usr/bin/rm -f /tmp/zabbix_agentd.pid
# 啟動前刪除PID文件
ExecStart=/usr/local/zabbix_agent-3.4.15/sbin/zabbix_agentd
# 啟動命令
ExecReload=/bin/kill -s HUP $MAINPID
# 重載執行命令
KillSignal=SIGQUIT
TimeoutStopSec=5
# 停止超時時間,如果不能在指定時間內停止,將通過SIGKILL強制終止
KillMode=mixed
# systemd停止服務的方式
Restart=on-failure
# 服務不正常退出后重啟
#PrivateTmp=true
# 表示給服務分配獨立的臨時空間

[Install]
WantedBy=multi-user.target
# 多用戶模式

配置字段Type

  simple(默認):# 以ExecStart字段啟動的進程為主進程

  forking:  # ExecStart字段以fork()方式啟動,啟動完成父進程將退出,子進程作為主服務進程持續運行,可以設置PIDFile,以便systemd可靠地識別主服務進程。

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

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

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

  idle:    # 類似於simple,但是要等到其他任務都執行完,才會啟動該服務。

KillMode:

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

  process:只有主進程被終止

  mixed:SIGTERM信號被發送給主進程,SIGKILL信號被發送給子進程

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

Restart:

  no:服務不會重啟,默認

  on-success:服務正常退出時重啟

  on-failure:服務非正常退出時重啟

  on-watchdog:超時退出時重啟

  always:無論正常或非正常退出都將重啟

ExecStart:啟動服務執行的命令及參數

ExecStartPre:啟動服務前執行的其他命令

ExecStartPost:服務啟動后執行的其他命令

ExecStop:停止服務執行的命令及參數

ExecStopPre:停止服務前執行的其他命令

ExecStopPost:服務停止后執行的其他命令


免責聲明!

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



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