一,、init進(jìn)程演變 1.init的發(fā)展 CentOS 5: SysV init,串行 CentOS 6:Upstart,并行,借鑒ubantu CentOS 7:Systemd,并行,,借鑒MAC 2.Systemd新特性: (1)系統(tǒng)引導(dǎo)時(shí)實(shí)現(xiàn)服務(wù)并行啟動(dòng):服務(wù)間無依賴關(guān)系會(huì)并行啟動(dòng) (2)按需激活進(jìn)程:若服務(wù)非立刻使用,,不會(huì)立刻激活,處于半活動(dòng)狀態(tài),,占用端口用時(shí)啟動(dòng)服務(wù) (3)系統(tǒng)狀態(tài)快照:回滾到過去某一狀態(tài) (4)基于依賴關(guān)系定義服務(wù)控制邏輯
二,、systemd核心概念:unit單元 1.unit相關(guān)配置文件: unit由其相關(guān)配置文件進(jìn)行標(biāo)識(shí),、識(shí)別和配置 文件中主要包含了系統(tǒng)服務(wù),、監(jiān)聽的socket、保存的快照以及其它與init相關(guān)的信息,; /usr/lib/systemd/system /run/systemd/system /etc/systemd/system 2.unit常見類型: Serviceunit:文件擴(kuò)展名為.service,,用于定義系統(tǒng)服務(wù); Targetunit:文件擴(kuò)展為.target,,用于模擬實(shí)現(xiàn)“運(yùn)行級(jí)別”,; Device unit=:文件擴(kuò)展名為 .device,用于定義內(nèi)核識(shí)別的設(shè)備,; Mount unit:文件擴(kuò)展名為.mount,,定義文件系統(tǒng)掛載點(diǎn); Socketunit:文件擴(kuò)展名為 .socket,,用于標(biāo)識(shí)進(jìn)程間通信用到的socket文件,; Snapshotunit:文件擴(kuò)展名為 .snapshot, 管理系統(tǒng)快照,; Swapunit:文件擴(kuò)展名為 .swap, 用于標(biāo)識(shí)swap設(shè)備,; Automountunit: 文件擴(kuò)展名為.automount,文件系統(tǒng)自動(dòng)點(diǎn)設(shè)備; Pathunit:文件擴(kuò)展名為 .path, 用于定義文件系統(tǒng)中的一文件或目錄,; 3.unit特性: 1)基于socket的激活機(jī)制:socket與程序分離,,將套接字先分配但時(shí)程序本身未啟動(dòng) 2)基于bus的激活機(jī)制:基于總線的請(qǐng)求來激活設(shè)備 3)基于device的激活機(jī)制:設(shè)備插入時(shí)候自動(dòng)掛載激活設(shè)備,掛載點(diǎn)不存在自動(dòng)創(chuàng)建 4)基于Path的激活機(jī)制:監(jiān)控目錄文件是否存在來激活服務(wù)或者進(jìn)程 5)系統(tǒng)快照:保存各unit的當(dāng)前狀態(tài)信息于持久存儲(chǔ)設(shè)備中,; 6)向后兼容sysv init腳本,; /etc/init.d/下的腳本也能兼容 注意:也存在不兼容情況: 1)systemctl的命令是固定不變的; 2)非由systemd啟動(dòng)的服務(wù),,systemctl無法與之通信,;
三、syscemctl:管理systemd系統(tǒng)服務(wù) syscemctl命令:控制systemd系統(tǒng)和服務(wù)管理 systemctl [OPTIONS...] COMMAND [NAME...] CentOS 7上通過管理 service類型的unit文件 CentOS 5/6 ==>CentOS 7轉(zhuǎn)換: 1.啟動(dòng)/關(guān)閉類 啟動(dòng):service NAME start ==> systemctl start NAME.service 停止:service NAME stop ==> systemctl stop NAME.service 重啟:service NAME restart ==> systemctl restart NAME.service 狀態(tài):service NAME status ==> systemctl status NAME.service 條件式重啟:service NAME condrestart ==> systemctl try-restart NAME.service 重載或重啟服務(wù):systemctl reload-or-restart NAME.servcie 重載或條件式重啟服務(wù):systemctl reload-or-try-restart NAME.service 2.查看服務(wù)類 查看某服務(wù)當(dāng)前激活與否的狀態(tài):systemctl is-active NAME.service 查看所有已激活的服務(wù):systemctl list-units --type service 查看所有服務(wù)(已激活及未激活):chkconfig --lsit ==> systemctl list-units -t service --all 3.開機(jī)設(shè)置類 設(shè)置服務(wù)開機(jī)自啟:chkconfig NAME on ==> systemctl enable NAME.service 禁止服務(wù)開機(jī)自啟:chkconfig NAME off ==> systemctl disable NAME.service 查看某服務(wù)是否能開機(jī)自啟:chkconfig --list NAME ==> systemctl is-enabled NAME.service 禁止某服務(wù)設(shè)定為開機(jī)自啟:systemctl mask NAME.service 取消此禁止:systemctl unmask NAME.servcie 4.查看依賴關(guān)系類 查看服務(wù)的依賴關(guān)系:systemctl list-dependencies NAME.service 5.管理target units: 1)運(yùn)行級(jí)別對(duì)應(yīng)關(guān)系 0 ==> runlevel0.target, poweroff.target 1 ==> runlevel1.target, rescue.target 2 ==> runlevel2.tartet, multi-user.target 3 ==> runlevel3.tartet, multi-user.target 4 ==> runlevel4.tartet, multi-user.target 5 ==> runlevel5.target, graphical.target 6 ==> runlevel6.target, reboot.target 2)級(jí)別相關(guān)命令 級(jí)別切換:init N ==> systemctl isolate NAME.target 查看級(jí)別:runlevel ==> systemctl list-units --type target 查看所有級(jí)別:systemctl list-units -t target -a 獲取默認(rèn)運(yùn)行級(jí)別:systemctl get-default 修改默認(rèn)運(yùn)行級(jí)別:systemctl set-default NAME.target 切換至緊急救援模式:systemctl rescue 切換至emergency模式:systemctl emergency 6.其它常用命令: 關(guān)機(jī):systemctl halt, systemctl poweroff 重啟:systemctl reboot 掛起:systemctl suspend 快照:systemctl hibernate 快照并掛起:systemctl hybrid-sleep
四,、服務(wù)單元文件:service unit file 1./usr/lib/systemd/system和/etc/systemd/system關(guān)系 /etc...設(shè)定默認(rèn)運(yùn)行級(jí)別和啟動(dòng)時(shí)服務(wù)的運(yùn)行關(guān)系,,連接文件。 一般管理員可在/etc/…...下定義一些service unit file文件
2.serviceunit file文件格式 例如:[root@localhost system]# cat firewalld.service [Unit]:定義與Unit類型無關(guān)的通用選項(xiàng),;用于提供unit的描述信息,、unit行為及依賴關(guān)系等; [Service]:與特定類型相關(guān)的專用選項(xiàng),;此處為Service類型,; [Install]:定義由"systemctl enable"以及"systemctl disable"命令在實(shí)現(xiàn)服務(wù)啟用或禁用時(shí)用到選項(xiàng); (1)Unit段的常用選項(xiàng): Description:描述信息,;意義性描述,; After:定義unit的啟動(dòng)次序;表示當(dāng)前unit應(yīng)該晚于哪些unit啟動(dòng),;其功能與Before相反,; Requies:依賴到的其它units;強(qiáng)依賴,,被依賴的units無法激活時(shí),,當(dāng)前unit即無法激活; Wants:依賴到的其它units,;弱依賴,; Conflicts:定義units間的沖突關(guān)系; (2)Service段的常用選項(xiàng): Type:用于定義影響ExecStart及相關(guān)參數(shù)的功能的unit進(jìn)程啟動(dòng)類型,; 類型種類: simple:默認(rèn),。由ExecStart指明的進(jìn)程所啟動(dòng)起來進(jìn)程為主進(jìn)程 forking:由ExecStart所啟動(dòng)的進(jìn)程生成的一個(gè)子進(jìn)程為主,父進(jìn)程退出 oneshot:一次性的啟動(dòng),,后續(xù)的unit進(jìn)程啟動(dòng)后,,該進(jìn)程退出 dbus:僅在得到dbus之后才推出 notify:發(fā)送通知以后才能運(yùn)行 idle:類似于simple EnvironmentFile:環(huán)境配置文件,為ExecStart提供一些變量,; ExecStart:指明啟動(dòng)unit要運(yùn)行命令或腳本,;ExecStartPre, ExecStartPost ExecStop:指明停止unit要運(yùn)行的命令或腳本; Restart:啟動(dòng)此項(xiàng),意外終止會(huì)自動(dòng)重啟腳本 (3)Install段的常用選項(xiàng): Alias:當(dāng)前unit的別名 RequiredBy:被哪些units所依賴,; WantedBy:被哪些units所依賴,;
注意:對(duì)于新創(chuàng)建的unit文件或,修改了的unit文件,,要通知systemd重載此配置文件,; #systemctl daemon-reload |
|