systemd簡介
systemd是Linux系統(tǒng)的一組基本構(gòu)建塊
它提供了一個系統(tǒng)和服務(wù)管理器
它作為PID 1 運行并啟動系統(tǒng)的其余部分進(jìn)程
控制systemd的主要命令是systemctl
systemd命令
[root@web1 ~]# systemctl #列出所有啟動的服務(wù)
[root@web1 ~]# systemctl status <服務(wù)名稱> #查看服務(wù)狀態(tài)
[root@web1 ~]# systemctl start <服務(wù)名稱> #啟動服務(wù)狀態(tài)
[root@web1 ~]# systemctl stop <服務(wù)名稱> #關(guān)閉服務(wù)狀態(tài)
[root@web1 ~]# systemctl restart <服務(wù)名稱> #重啟服務(wù)狀態(tài)
[root@web1 ~]# systemctl enable <服務(wù)名稱> #設(shè)置開機(jī)自啟
[root@web1 ~]# systemctl enable --now <服務(wù)名稱> #設(shè)置開機(jī)自啟并啟動
[root@web1 ~]# systemctl disable <服務(wù)名稱> #禁止開機(jī)自啟
[root@web1 ~]# systemctl is-active <服務(wù)名稱> #查看是否激活
[root@web1 ~]# systemctl is-enabled <服務(wù)名稱> #查看是否開機(jī)自啟
[root@web1 ~]# systemctl reboot #重啟計算機(jī)
[root@web1 ~]# systemctl poweroff #關(guān)閉計算機(jī)
Unit文件
systemd管理服務(wù)時會讀取對應(yīng)的配置文件也就是Unit文件
讀取Unit文件的目錄(優(yōu)先級由高到低)
/etc/systemd/system (設(shè)置了開機(jī)自啟的Unit文件)
/usr/lib/systemd/system (所有已經(jīng)安裝軟件的Unit文件)
Unit文件案例
[Unit]
Description=Command Scheduler
[Service]
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill-HUP $MAINPID
killMode=precess
[Install]
WantedBy=multi-user.target
Unit語法描述
Unit語法描述
systemd案例
編寫Unit文件趟庄,使systemctl命令控制nginx
編寫Unit文件
[root@web1 ~]# cd /usr/lib/systemd/system
[root@web1 ~]# cp httpd.service nginx.service //拷貝模板
[root@web1 ~]# vim nginx.service //修改
[Service]
Type=forking //nginx是多進(jìn)程類型程序,要設(shè)置為forking
ExecStart=/usr/local/nginx/sbin/nginx //當(dāng)執(zhí)行了systemctl start nginx之后執(zhí)行的命令
ExecReload=/usr/local/nginx/sbin/nginx -s reload //當(dāng)執(zhí)行了systemctl reload nginx之后執(zhí)行的命令
ExecStop=/bin/kill -s QUIT $MAINPID //當(dāng)執(zhí)行了systemctl stop nginx之后執(zhí)行的命令溺森,這里是用kill命令發(fā)送退出信號給nginx的進(jìn)程號喜庞,相當(dāng)于停止nginx服務(wù)株搔,-s QUIT是發(fā)送退出信號筑辨,使nginx優(yōu)雅關(guān)閉(處理完客戶請求才退出)总滩,$MAINPID是變量纲堵,里面存了nginx的進(jìn)程號
[Install]
WantedBy=multi-user.target //支持開機(jī)自啟
激活Unit文件
[root@web1 ~]# systemctl daemon-reload //激活剛才的test.service文件,但有時可能不好使咳秉,可以重啟系統(tǒng)
然后重啟服務(wù)之后可以用systemctl等命令控制nginx
提示:必須要提前先安裝好nginx服務(wù)婉支,并且沒有其他服務(wù)占用80端口!