1. systemd新特性 2. systemd的常見unit類型 3. Systemd關鍵特性 4. 編譯安裝nginx,並使用systemd管理nginx ...
1. systemd新特性
並行處理(同時啟動)所有服務。
基於依賴關係定義的服務控制邏輯
系統狀態快照
按需激活進程,只有第一次被訪問時才會真正啟動;
2. systemd的常見unit類型
Service unit:文件擴展名為.service,主要用於定義系統服務;
Target unit:文件擴展名為.target,主要用於模擬實現運行級別;
Device unit:文件擴展名為.device,主要用於定義內核識別的設備;
Mounu unit:文件擴展名為.mount,主要用於定義文件系統掛載點;
Socket unit:文件擴展名為.sockett,主要用於標識進程間通信用到的socket文件;
snapshot unit:文件擴展名為.snapshot,主要用於管理系統快照;
Swap unit:文件擴展名為.swap,主要用於標識swap設備;
Automount unit:文件擴展名為.automount,主要用於文件系統自動掛載點設置;
Path unit:文件擴展名為.path,主要用於定義文件系統中的文件或目錄;
3. Systemd關鍵特性
基於socket的激活機制:socket與程式分離;
基於bus的激活機制:
基於設備device的激活機制:能監控內核輸出的硬體信息,當設備插入時一旦發現就創建設備文件,再自動掛載至某掛載點,如果掛載點不存在還能自動創建;
基於path的激活機制:系統可監控某目錄或文件是否存在,如果文件存在,就立即激活一個服務或進程;
例如:某服務運行中突然崩潰,崩潰時能創建一個log或lock文件;一旦發現這個lock文件立即激活一個程式,如發送報告;
系統快照:能保存各unit的當前狀態信息於持久存儲設備中;因為systemd的所有管理都是通過unit實現的,回滾時使用;
向後相容sysv init腳本:所以放在/etc/init.d/服務腳本也一樣能靠systemd來啟動;
4. 編譯安裝nginx,並使用systemd管理nginx
[Allen@centos7 ~]$ tar xf nginx-1.8.1.tar.gz
[Allen@centos7 ~]$ cd nginx-1.8.1/
[Allen@centos7 nginx-1.8.1]$ sudo ./configure --prefix=/usr/local/nginx1.8.1 --with-http_ssl_module
[Allen@centos7 nginx-1.8.1]$ make && make install
[root@centos7 ~]# cat /etc/systemd/system/nginx.service
[Unit]
Description=nginx server daemon
Documentation=man:nginx(8)
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx1.8.1/sbin/nginx
ExecReload=/usr/local/nginx1.8.1/sbin/nginx -s reload
ExecStop=/usr/local/nginx1.8.1/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl enable nginx.service
[root@centos7 ~]# systemctl start nginx.service
[root@centos7 ~]# systemctl status nginx.service
● nginx.service - nginx server daemon
Loaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2018-11-02 09:59:09 CST; 4min 15s ago
Docs: man:nginx(8)
Main PID: 7893 (nginx)
CGroup: /system.slice/nginx.service
├─7893 nginx: master process /usr/local/nginx1.8.1/sbin/nginx
├─7904 nginx: worker process
├─7905 nginx: worker process
├─7906 nginx: worker process
├─7907 nginx: worker process
└─7908 nginx: worker process
Nov 02 09:59:09 centos7.4 systemd[1]: Starting nginx server daemon...
Nov 02 09:59:09 centos7.4 systemd[1]: Started nginx server daemon.
Nov 02 09:59:43 centos7.4 systemd[1]: Reloaded nginx server daemon.