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