[Linux啟動流程和服務(wù)管理(init和systemd)]
轉(zhuǎn)載自:(https://www.cnblogs.com/csnd/p/11808046.html)
目錄
[init和Systemd的區(qū)別](https://www.cnblogs.com/csnd/p/11808046.html#init%E5%92%8CSystemd%E7%9A%84%E5%8C%BA%E5%88%AB)
二:Linux服務(wù)管理(service,systemctl)
一:Linux啟動流程
Rhel6啟動過程:
Rhel7啟動過程:
GRUB2相較于GRUB一代的提升:更健壯威根、可移植凤巨、更強大。支持BIOS洛搀、EFI和OpenFirmware敢茁,支持GPT和MBR分區(qū)表。支持非Linux系統(tǒng)留美,如蘋果HFS文件系統(tǒng)和Windows的NTFS文件系統(tǒng)
systemd 被設(shè)計用來改進 sysvinit 的缺點彰檬,它和ubuntu的upstart是競爭對手伸刃,預(yù)計會取代它們。
systemd的目標是:盡可能啟動更少進程僧叉;盡可能將更多進程并行啟動奕枝。systemd盡可能減少對shell腳本的依賴。傳統(tǒng)sysvinit使用inittab來決定運行哪些shell腳本瓶堕,大量使用shell腳本被認為是效率低下無法并行的原因隘道。systemd使用了Linux專屬技術(shù),不再顧及POSIX兼容郎笆。
init和Systemd的區(qū)別
init:
- 一是啟動時間長谭梗,init是串行啟動,只有前一個進程啟動完宛蚓,才會啟動下一個進程
- 二是啟動腳本復(fù)雜激捏,Init進程只是執(zhí)行啟動腳本,不管其他事情凄吏,腳本需要自己處理各種情況远舅,這往往使得腳本變得很長
- 由Linux內(nèi)核加載運行,位于 /sbin/init ,是系統(tǒng)中第一個進程痕钢,PID永遠為1
對于支持 service 的程序图柏,安裝的時候,會自動的在 /etc/init.d 目錄添加一個配置文件任连。當我們使用 service 控制程序時蚤吹,比如執(zhí)行開啟httpd的服務(wù):service httpd start 。那么我們的 service 就會開啟 /etc/init.d/httpd 配置文件里面指向的 /usr/sbin/httpd 可執(zhí)行文件
systemd:
- 按需啟動服務(wù)随抠,減少系統(tǒng)資源消耗裁着。
- 盡可能并行啟動進程,減少系統(tǒng)啟動等待時間
- 由Linx內(nèi)核加載運行拱她,位于 /usr/lib/systemd/systemd 二驰,是系統(tǒng)中第一個進程,PID永遠為1
對于支持 systemd 的程序秉沼,安裝的時候桶雀,會自動的在 /usr/lib/systemd/system 目錄添加一個配置文件。當我們使用 systemctl 控制該程序時氧猬,比如執(zhí)行開啟httpd服務(wù):systemctl start httpd.service 背犯。那么我們的 systemctl 就會開啟 httpd.service 配置里面指向的 /usr/sbin/httpd 可執(zhí)行文件
[圖片上傳中...(image-89d40c-1641792380300-1)]
如果我們想讓該程序開機啟動坏瘩,我們可以執(zhí)行命令 systemctl enable httpd盅抚,這個命令相當于在 /etc/systemd/system 目錄添加一個軟鏈接,指向 /usr/lib/systemd/system 目錄下的 httpd.service 文件敛纲。這是因為開機時篙骡,Systemd
只執(zhí)行 /etc/systemd/system
目錄里面的配置文件。
Init 進程的配置文件
參數(shù) | 說明 |
---|---|
/etc/init.d/ | 服務(wù)啟動腳本配置文件存放目錄 |
/etc/inittab | 默認運行級別配置文件 |
/etc/init/rcS.conf | 系統(tǒng)初始化配置文件 |
/etc/init/rc.conf | 各運行級別初始化的配置文件 |
/etc/init/rcS-sulogin.conf | 單用戶模式啟動 /sbin/sushell 環(huán)境的配置文件 |
/etc/init/control-alt-delete.conf | 終端下的 ctrl+alt+del 熱鍵操作的配置文件 |
/etc/sysconfig/init | tty終端的配置文件 |
/etc/init/start-ttys.conf | 配置tty終端的開啟數(shù)量灾测、設(shè)備文件 |
/etc/init/tty.conf 或 /etc/init/serial.conf | 控制tty終端的開啟 |
Systemd進程的配置文件
參數(shù) | 說明 |
---|---|
/etc/systemd/system/default.target | 取代/etc/inittab文件配置丰包,通常符號鏈接到 /lib/systemd/system/graphical.target |
/run/systemd/system/ | 系統(tǒng)執(zhí)行過程中所產(chǎn)生的服務(wù)腳本所在目錄 |
/etc/systemd/system/ | 里面存放著不同級別的開啟自啟服務(wù) |
/usr/lib/systemd/system/ 和 /lib/systemd/system/ 和禁熏,兩個文件完全一樣,因為lib是/usr/lib的軟鏈接 | 每個服務(wù)最主要的啟動腳本設(shè)置邑彪,類似于之前的 /etc/init.d/ |
** 運行級別和說明**
運行級別 | 說明 | Rehl 6/7 命令 | Rhel7 命令 |
---|---|---|---|
0 | 關(guān)機狀態(tài)瞧毙,使用該級別將會關(guān)機 | init 0 | poweroff |
1 | 系統(tǒng)救援模式,多用于系統(tǒng)維護 | init 1 | systemctl isolate rescue.target |
2 | 字符界面的多用戶模式(不可訪問網(wǎng)絡(luò)) | init 2 | systemctl isolate mutil-user.target |
3 | 字符界面的完整多用戶模式寄症,大多數(shù)服務(wù)器主機運行此級別 | init 3 | systemctl isolate mutil-user.target |
4 | 未分配使用 | init 4 | systemctl isolate mutil-user.target |
5 | 圖形界面的多用戶模式宙彪,提供了圖形桌面操作環(huán)境 | init 5 | systemctl isolate graphical.target |
6 | 重新啟動主機 | init 6 | reboot |
查看運行級別:
- runlevel : 顯示切換前的運行級別 和當前運行級別 (6/7)
- systemctl get-default : 顯示當前運行級別 (7)
永久設(shè)置開機模式
- systemctl set-default multi-user.target 開機默認為文本模式
- systemctl set-default graphical.target 開機默認為圖形模式
- 修改 /etc/inittab 默認運行級別配置文件
二:Linux服務(wù)管理(service,systemctl)
Rhel6 用 service 和 chkconfig 來管理服務(wù),它是 SystemV 架構(gòu)下的一個工具有巧。
Rhel7 是用 systemctl 來管理服務(wù)释漆,它融合了之前的 service 和 chkconfig 的功能于一體±河可以使用它永久性或只在當前會話中啟用/禁用服務(wù)男图。systemctl 是 systemd 架構(gòu)下的一個工具。
動作 | Rhel6 舊指令 | Rhel7新指令 | |
---|---|---|---|
啟動某服務(wù) | service httpd start | systemctl start httpd | |
停止某服務(wù) | service httpd stop | systemctl stop httpd | |
重啟某服務(wù) | service httpd restart | systemctl restart httpd | |
檢查服務(wù)狀態(tài) | service httpd status | systemctl status httpd | |
刪除某服務(wù) | chkconfig --del httpd | 停掉應(yīng)用甜橱,刪除其配置文件 | |
使服務(wù)開機自啟動 | chkconfig --level 5 httpd on | systemctl enable httpd | |
使服務(wù)開機不自啟動 | chkconfig --level 5 httpd off | systemctl disable httpd | |
顯示所有已啟動的服務(wù) | chkconfig --list | systemctl list-unit-files | grep enabled |
加入自定義服務(wù) | chkconfig --add test | systemctl load test | |
查詢服務(wù)是否開機自啟 | chkconfig --list | grep httpd | systemctl is-enabled httpd |
查看啟動失敗的服務(wù) | systemctl --failed |
systemd的一些常用命令:
列出所有可用單元 : systemctl list-unit-files
列出所有運行的單元: systemctl list-unit-files | grep enabled
列出所有可用服務(wù): systemctl list-unit-files --type=service
列出所有運行的服務(wù): systemctl list-unit-files --type=service | grep enabled
屏蔽httpd服務(wù):systemctl mask httpd
](https://www.cnblogs.com/csnd/p/11808046.html)