centos7 systemctl配置開機自啟動服務


centos7使用systemctl替代原來/etc/init.d,按官方的說法是提高系統服務的運行效率、服務配置更加簡單易用,對於一些自定義的服務來配置開機自啟動,是真的香!

概念理解

  • 它是服務管理工具,融合之前service和chkconfig功能於一體
  • 有系統(system)和用戶(user)之分,可直接放/lib/systemd/system目錄下
  • 以.service結尾,一般分為3部分:Unit、Service、Install

參數說明

Unit:主要對服務的說明

  • Description:用於描述服務而已
  • After:用於描述服務類別

Service:關鍵部分,服務運行的具體配置

參數太多,下面只列出幾個常用的關鍵參數,其它根據需要自行百度:
常用Type的幾種類型:

Type=simple 默認值,表示 ExecStart= 所設定的進程就是該服務的主進程。
Type=forking 后台運行的形式。以 fork 方式從父進程創建子進程,創建后父進程會立即退出,配合PIDFile=使用,以幫助 systemd 准確定位該服務的主進程。
Type=notify 與simple類似,但約定服務會在就緒后向systemd發送一個信號,需要配合NotifyAccess來讓Systemd接收消息。
  • User:是設置服務運行的用戶
  • Group:是設置服務運行的用戶組
  • PIDFile:為存放PID的文件路徑
  • ExecStart:為服務的具體運行命令
  • ExecReload:為重啟命令
  • ExecStop:為停止命令
  • Environment:指定環境變量

注意:所有命令要求使用絕對路徑,使用相對路徑會報錯。

Install:服務安裝的相關設置,用來定義啟動以及是否開機啟動

  • WantedBy:它的值是一個或多個 Target,當前 Unit 激活時(enable)符號鏈接會放入/etc/systemd/system目錄下面以 Target 名 + .wants后綴構成的子目錄中
  • Alias:當前 Unit 可用於啟動的別名

使用案例

  • 以uwsgi配置為例:
## cat /lib/systemd/system/uwsgi.service 
[Unit]
Description=uWSGI Emperor
After=syslog.target

[Service]
#PIDFile=/run/uwsgi.pid
ExecStart=/usr/local/bin/uwsgi --ini /home/dengzhixu/crawl_data/uwsgi.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
#Type=forking
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target
  • 添加可執行權限:
chmod +x /lib/systemd/system/uwsgi.service

常用命令

## 啟動服務
systemctl start uwsgi.service
  
## 停止服務
systemctl stop uwsgi.service
  
## 重啟服務
service uwsgi restart
systemctl restart uwsgi.service
  
## 服務自啟動
systemctl enable uwsgi.service
  
## 服務關閉自動啟動
systemctl disable uwsgi.service
  
## 檢查服務狀態
systemctl status uwsgi.service
  
## 顯示所有已啟動的服務
systemctl list-units  --type=service

其它需要配置的服務,可自行參考畫葫蘆。
----by 鋼鐵 648403020@qq.com 09.10.2020


免責聲明!

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



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