Centos7,8啟動(dòng)流程
Systemd超級(jí)守護(hù)進(jìn)程
功能
替代了init 成為1號(hào)進(jìn)程,負(fù)責(zé)在系統(tǒng)啟動(dòng)或運(yùn)行時(shí),激活系統(tǒng)資源,服務(wù)器進(jìn)程和其它進(jìn)程Unit
新特性
1.系統(tǒng)引導(dǎo)時(shí)實(shí)現(xiàn)服務(wù)并行啟動(dòng)
2.按需啟動(dòng)守護(hù)進(jìn)程
3.自動(dòng)化的服務(wù)依賴關(guān)系管理
4.同時(shí)采用socket式與D-Bus總線式激活服務(wù)
5.socket與服務(wù)程序分離
6.向后兼容sysv init腳本
7.使用systemctl命令管理,systemctl命令固定不變,不可擴(kuò)展,非由systemd啟動(dòng)的服務(wù),
systemctl無法與之通信和控制
8.系統(tǒng)狀態(tài)快照
運(yùn)行模式
Centos7及其之后的版本取消了(0~6)運(yùn)行級(jí)別,改為target運(yùn)行模式
配置文件
/usr/lib/systemd/system/*.target
服務(wù)啟動(dòng)配置文件
修改配置后需重新加載 systemctl deamon-reload
/usr/lib/systemd/system 存放服務(wù)啟動(dòng)腳本 (相當(dāng)于centos6 /etc/init.d)
/lib/systemd/system (ubuntu配置與 /usr/lib/systemd/system 目錄等效)
啟動(dòng)腳本分為兩類
.service 結(jié)尾的服務(wù)類
.socket 結(jié)尾的接口類
/run/systemd/system (系統(tǒng)執(zhí)行過程中產(chǎn)生的腳本)
/etc/systemd/system (類似centos6 /etc/rc$RUNLEVEL.d/)
格式


[Unit] 定義與Unit類型無關(guān)的通用選項(xiàng);用于提供unit的描述信息、unit行為及依賴關(guān)系等
Description:描述信息
After:定義unit的啟動(dòng)次序,表示當(dāng)前unit應(yīng)該晚于哪些unit啟動(dòng),其功能與Before相反
Requires:依賴到的其它units,強(qiáng)依賴,被依賴的units無法激活時(shí),當(dāng)前unit也無法激活
Wants:依賴到的其它units,弱依賴
Conflicts:定義units間的沖突關(guān)系
[Service] 與特定unit類型相關(guān)的專用選項(xiàng);此處為Service(標(biāo)明unit類型)
Type:定義影響ExecStart及相關(guān)參數(shù)的功能的unit進(jìn)程啟動(dòng)類型
simple:默認(rèn)值,這個(gè)daemon主要由ExecStart接的指令串來啟動(dòng),啟動(dòng)后常駐于內(nèi)存中
forking:由ExecStart啟動(dòng)的程序透過spawns延伸出其他子程序來作為此daemon的主要服務(wù)。原生父程序在啟動(dòng)結(jié)束后就會(huì)終止
oneshot: 與simple類似,不過這個(gè)程序在工作完畢后就結(jié)束了,不會(huì)常駐在內(nèi)存中
dbus:與simple類似,但這個(gè)daemon必須要在取得一個(gè)D-Bus的名稱后,才會(huì)繼續(xù)運(yùn)作.因此通常也要同時(shí)設(shè)定BusNname=才行
notify:在啟動(dòng)完成后會(huì)發(fā)送一個(gè)通知消息。還需要配合NotifyAccess來讓Systemd接收消息
idle:與simple類似,要執(zhí)行這個(gè)daemon必須要所有的工作都順利執(zhí)行完畢后才會(huì)執(zhí)行。這類的daemon通常是開機(jī)到最后才執(zhí)行即可的服務(wù)
TimeoutStartSec:延遲時(shí)間,0無延遲立即啟動(dòng)
EnvironmentFile:環(huán)境配置文件
ExecStart:指明啟動(dòng)unit要運(yùn)行命令或腳本的絕對(duì)路徑
ExecStartPre: ExecStart前運(yùn)行
ExecStartPost: ExecStart后運(yùn)行
ExecStop:指明停止unit要運(yùn)行的命令或腳本
Restart:當(dāng)設(shè)定Restart=1時(shí),則當(dāng)次daemon服務(wù)意外終止后,會(huì)再次自動(dòng)啟動(dòng)此服務(wù)
PrivateTmp:設(shè)定為yes時(shí),會(huì)在生成/tmp/systemd-private-UUID-NAME.service-XXXXX/tmpl 目錄
[Install] 定義由systemctl enable"以及"systemctl disable"命令在實(shí)現(xiàn)服務(wù)啟用或禁用時(shí)用到的一些選項(xiàng)
Alias:別名,可使用systemctl command Alias.service
RequiredBy:被哪些units所依賴,強(qiáng)依賴
WantedBy:被哪些units所依賴,弱依賴 (如果是運(yùn)行模式,代表運(yùn)行在何種運(yùn)行模式下)
Also:安裝本服務(wù)的時(shí)候還要安裝別的相關(guān)服務(wù)
Unint
service unit
文件擴(kuò)展名為.service,用于定義系統(tǒng)服務(wù)
Socket unit
socket,定義進(jìn)程間通信用的socket文件,也可在系統(tǒng)啟動(dòng)時(shí),延遲>啟動(dòng)服務(wù),實(shí)現(xiàn)按需啟動(dòng)
Target unit
文件擴(kuò)展名為.target,用于模擬實(shí)現(xiàn)運(yùn)行級(jí)別
Device unit
文件拓展名.device,用于定義內(nèi)核識(shí)別的設(shè)備
Mount unit
文件拓展名.mount,定義文件系統(tǒng)掛載點(diǎn)
Snapshot unit
文件拓展名.snapshot,管理系統(tǒng)快照
Swap unit
文件拓展名.swap,用于標(biāo)識(shí)swap設(shè)備
Automount unit
文件拓展名.automount,文件系統(tǒng)的自動(dòng)掛載點(diǎn)
Path unit
文件拓展名.path,用于定義文件系統(tǒng)中的一個(gè)文件或目錄使用,常用于當(dāng)文件系統(tǒng)變化時(shí),延遲激活服務(wù),如: spool目錄
systemctl命令管理Unit
查看unit類型
systemctl -t help
設(shè)置開機(jī)啟動(dòng)
systemctl enable/disable 服務(wù) 設(shè)置開機(jī)啟動(dòng)或禁用服務(wù)
本質(zhì)是在 /etc/systemd/system 下創(chuàng)建軟鏈接指向/usr/lib/systemd/system
重讀配置
systemctl deamon-reload 重新加載systemd配置
禁用服務(wù)
systemctl mask 服務(wù) 禁用服務(wù)且無法用start命令啟用
systemctl unmask 服務(wù) 啟用被mask禁用的服務(wù)
mask 禁用服務(wù)本質(zhì)是將/etc/systemd/system/ 下對(duì)應(yīng)的服務(wù)創(chuàng)建軟鏈接到/dev/null
判斷是否已啟動(dòng)
systemctl is-active 服務(wù) 啟動(dòng)為真
判斷服務(wù)是否開機(jī)啟動(dòng)
systemctl is-enabled 服務(wù) 開機(jī)啟動(dòng)為真
服務(wù)狀態(tài)
查看內(nèi)核已識(shí)別服務(wù)
systemctl list-units
systemctl list-units -t unit類型 顯示指定類型
查看依賴關(guān)系
systemctl list-dependencies
查看默認(rèn)運(yùn)行模式
systemctl get-default
設(shè)置運(yùn)行模式
systemctl set-default 運(yùn)行模式 持久有效
在啟動(dòng)時(shí)進(jìn)入編輯模式
在Linux行最后添加 systemd.unit=啟動(dòng)模式 臨時(shí)修改啟動(dòng)后運(yùn)行模式
切換本地運(yùn)行模式
systemctl isolate 運(yùn)行模式
Centos7、8啟動(dòng)流程
查看啟動(dòng)過程
systemd-analyze 啟動(dòng)花費(fèi)時(shí)間概況
啟動(dòng)服務(wù)花費(fèi)時(shí)間
systemd-analyze blame
啟動(dòng)流程順序
systemd-analyze plot 網(wǎng)頁(yè)標(biāo)簽格式顯示
systemd-analyze plot > log.html 再使用瀏覽器打開
破解ROOT密碼
啟動(dòng)時(shí)進(jìn)入編輯模式
方法一
在Linux行最后添加
rw,init=/sysroot/bin/sh
ctrl+x (執(zhí)行)
chroot /sysroot (切根)
passwd root
reboot
方法二
在Linux行最后添加
rd.break (打斷正常啟動(dòng))
ctrl+x(執(zhí)行)
mount -o remount,rw /sysroot (將根重新掛載為可讀)
chroot /sysroot (切根)
passwd root (修改密碼)
reboot
grub2
###配置文件
/boot/grub2/grub.cfg (不要修改)
/boot/grub2/grubenv 配置默認(rèn)啟動(dòng)項(xiàng)
/boot/loader/entries (8特有)
/boot/grub2/user.cfg 存放grub2密碼,格式為加密后的字符串
命令
生成配置
grub2-mkconfig (輸出到屏幕)
grub2-mkconfig -o 文件名 (生成配置到指定文件中)
grub2-setpassword 設(shè)置grub2密碼 (刪除/boot/grub2/user.cfg 配置文件則密碼被清空)
grub2-set-default 數(shù)字 (設(shè)置在啟動(dòng)菜單中的顯示順序,0是默認(rèn)啟動(dòng))
修復(fù)
1. 進(jìn)入救援模式
2. 切根
3. grub2-install 磁盤(重新制作bootloader)
4. grub2-mkconfig -o /boot/grub2/grub.cfg 創(chuàng)建grub.cfg文件
5. 重啟