systemd是目前Linux系統上主要的系統守護進程管理工具,由於init一方面對於進程的管理是串行化的,容易出現阻塞情況,另一方面init也僅僅是執行啓動腳本,並不能對服務本身進行更多的管理。 |
systemd是目前Linux系統上主要的系統守護進程管理工具,由於init一方面對於進程的管理是串行化的,容易出現阻塞情況,另一方面init也僅僅是執行啓動腳本,並不能對服務本身進行更多的管理。所以從CentOS 7開始也由systemd取代了init作爲默認的系統進程管理工具。
systemd所管理的所有系統資源都稱作Unit,通過systemd命令集可以方便的對這些Unit進行管理。比如systemctl、hostnamectl、timedatectl、localctl等命令,這些命令雖然改寫了init時代用戶的命令使用習慣(不再使用chkconfig、service等命令),但確實也提供了很大的便捷性。
1.最新系統都採用systemd管理(RedHat7,CentOS7,Ubuntu15...)
2.CentOS7 支持開機並行啓動服務,顯著提高開機啓動效率
3.CentOS7關機只關閉正在運行的服務,而CentOS6,全部都關閉一次。
4.CentOS7服務的啓動與停止不再使用腳本進行管理,也就是/etc/init.d下不在有腳本。
5.CentOS7使用systemd解決原有模式缺陷,比如原有service不會關閉程序產生的子進程。
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
- 每一個Unit都需要有一個配置文件用於告知systemd對於服務的管理方式
- 配置文件存放於/usr/lib/systemd/system/,設置開機啓動後會在/etc/systemd/system目錄建立軟鏈接文件
- 每個Unit的配置文件配置默認後綴名爲.service
- 在/usr/lib/systemd/system/目錄中分爲system和user兩個目錄,一般將開機不登陸就能運行的程序存在系統服務裏,也就是/usr/lib/systemd/system
- 配置文件使用方括號分成了多個部分,並且區分大小寫
實戰 源碼編譯安裝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服務