Linux內(nèi)核2

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/)

格式
image.png
image.png
[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. 重啟
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容