systemd進程管理工具實戰教程

systemd是目前Linux系統上主要的系統守護進程管理工具,由於init一方面對於進程的管理是串行化的,容易出現阻塞情況,另一方面init也僅僅是執行啓動腳本,並不能對服務本身進行更多的管理。
 1. systemd介紹

systemd是目前Linux系統上主要的系統守護進程管理工具,由於init一方面對於進程的管理是串行化的,容易出現阻塞情況,另一方面init也僅僅是執行啓動腳本,並不能對服務本身進行更多的管理。所以從CentOS 7開始也由systemd取代了init作爲默認的系統進程管理工具。

systemd所管理的所有系統資源都稱作Unit,通過systemd命令集可以方便的對這些Unit進行管理。比如systemctl、hostnamectl、timedatectl、localctl等命令,這些命令雖然改寫了init時代用戶的命令使用習慣(不再使用chkconfig、service等命令),但確實也提供了很大的便捷性。

2. systemd特點:

1.最新系統都採用systemd管理(RedHat7,CentOS7,Ubuntu15...)

2.CentOS7 支持開機並行啓動服務,顯著提高開機啓動效率

3.CentOS7關機只關閉正在運行的服務,而CentOS6,全部都關閉一次。

4.CentOS7服務的啓動與停止不再使用腳本進行管理,也就是/etc/init.d下不在有腳本。

5.CentOS7使用systemd解決原有模式缺陷,比如原有service不會關閉程序產生的子進程。

3. systemd語法:
systemctl [command]      [unit](配置的應用名稱)
command可選項
· start:啓動指定的unit          systemctl start nginx
· stop:關閉指定的unit           systemctl stop nginx
· restart:重啓指定unit          systemctl restart nginx
· reload:重載指定unit           systemctl reload nginx
· enable:系統開機時自動啓動指定unit,前提是配置文件中有相關配置 systemctl enable nginx
· disable:開機時不自動運行指定unit   systemctl disable nginx
· status:查看指定unit當前運行狀態 systemctl status nginx
4. systemd配置文件說明:
  1. 每一個Unit都需要有一個配置文件用於告知systemd對於服務的管理方式
  2. 配置文件存放於/usr/lib/systemd/system/,設置開機啓動後會在/etc/systemd/system目錄建立軟鏈接文件
  3. 每個Unit的配置文件配置默認後綴名爲.service
  4. /usr/lib/systemd/system/目錄中分爲system和user兩個目錄,一般將開機不登陸就能運行的程序存在系統服務裏,也就是/usr/lib/systemd/system
  5. 配置文件使用方括號分成了多個部分,並且區分大小寫
5. systemd相關文件:

systemd進程管理工具實戰教程systemd進程管理工具實戰教程

實戰 源碼編譯安裝nginx 實現systemd管理控制

安裝nginx編譯環境

yum  -y install gcc gcc-c++    openssl-devel pcre-devel gd-devel  iproute net-tools telnet wget curl
wget http://nginx.org/download/nginx-1.15.5.tar.gz
tar zxf nginx-1.15.5.tar.gz &&
cd nginx-1.15.5
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module
make -j 4 && make install

通用方式啓動nginx

/usr/local/nginx/sbin/nginx  #啓動
/usr/local/nginx/sbin/nginx  -s reload  #重啓
/usr/local/nginx/sbin/nginx -s   quit   #關閉nginx

systemd 管理控制啓動模式

vim      /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target

參數詳解

systemctl restart nginx
systemctl enable  nginx
systemctl stop  nginx

如圖所示實現了systemd 管理控制nginx服務

本文地址:https://www.linuxprobe.com/systemd-contor-jc.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章