Linux啟動流程和服務管理(init和systemd)


一:Linux啟動流程
Rhel6啟動過程:


Rhel7啟動過程:

 

 GRUB2相較於GRUB一代的提升:更健壯、可移植、更強大。支持BIOS、EFI和OpenFirmware,支持GPT和MBR分區表。支持非Linux系統,如蘋果HFS文件系統和Windows的NTFS文件系統

systemd 被設計用來改進 sysvinit 的缺點,它和ubuntu的upstart是競爭對手,預計會取代它們。

systemd的目標是:盡可能啟動更少進程;盡可能將更多進程並行啟動。systemd盡可能減少對shell腳本的依賴。傳統sysvinit使用inittab來決定運行哪些shell腳本,大量使用shell腳本被認為是效率低下無法並行的原因。systemd使用了Linux專屬技術,不再顧及POSIX兼容。

init和Systemd的區別
init: 

一是啟動時間長,init是串行啟動,只有前一個進程啟動完,才會啟動下一個進程
二是啟動腳本復雜,Init進程只是執行啟動腳本,不管其他事情,腳本需要自己處理各種情況,這往往使得腳本變得很長
由Linux內核加載運行,位於 /sbin/init   ,是系統中第一個進程,PID永遠為1


對於支持 service 的程序,安裝的時候,會自動的在 /etc/init.d 目錄添加一個配置文件。當我們使用 service 控制程序時,比如執行開啟httpd的服務:service httpd  start  。那么我們的 service 就會開啟 /etc/init.d/httpd 配置文件里面指向的 /usr/sbin/httpd 可執行文件

 

systemd:

按需啟動服務,減少系統資源消耗。
盡可能並行啟動進程,減少系統啟動等待時間
由Linx內核加載運行,位於 /usr/lib/systemd/systemd  ,是系統中第一個進程,PID永遠為1


對於支持 systemd 的程序,安裝的時候,會自動的在 /usr/lib/systemd/system 目錄添加一個配置文件。當我們使用 systemctl 控制該程序時,比如執行開啟httpd服務:systemctl  start  httpd.service 。那么我們的 systemctl 就會開啟 httpd.service 配置里面指向的 /usr/sbin/httpd 可執行文件

 

如果我們想讓該程序開機啟動,我們可以執行命令 systemctl enable  httpd,這個命令相當於在 /etc/systemd/system 目錄添加一個軟鏈接,指向 /usr/lib/systemd/system 目錄下的 httpd.service 文件。這是因為開機時,Systemd只執行 /etc/systemd/system 目錄里面的配置文件。

 

Init 進程的配置文件

參數 說明
/etc/init.d/ 服務啟動腳本配置文件存放目錄
/etc/inittab 默認運行級別配置文件
/etc/init/rcS.conf 系統初始化配置文件
/etc/init/rc.conf 各運行級別初始化的配置文件
/etc/init/rcS-sulogin.conf 單用戶模式啟動 /sbin/sushell 環境的配置文件
/etc/init/control-alt-delete.conf 終端下的 ctrl+alt+del 熱鍵操作的配置文件
/etc/sysconfig/init tty終端的配置文件
/etc/init/start-ttys.conf 配置tty終端的開啟數量、設備文件
/etc/init/tty.conf  或  /etc/init/serial.conf 控制tty終端的開啟
Systemd進程的配置文件

參數 說明
/etc/systemd/system/default.target 取代/etc/inittab文件配置,通常符號鏈接到 /lib/systemd/system/graphical.target
/run/systemd/system/ 系統執行過程中所產生的服務腳本所在目錄
/etc/systemd/system/ 里面存放着不同級別的開啟自啟服務 
/usr/lib/systemd/system/ 和 /lib/systemd/system/ 和,兩個文件完全一樣,因為lib是/usr/lib的軟鏈接 每個服務最主要的啟動腳本設置,類似於之前的 /etc/init.d/
 運行級別和說明

運行級別 說明 Rehl 6/7 命令 Rhel7 命令
0 關機狀態,使用該級別將會關機 init  0  poweroff
1 系統救援模式,多用於系統維護 init  1 systemctl  isolate  rescue.target
2 字符界面的多用戶模式(不可訪問網絡) init  2 systemctl  isolate  mutil-user.target
3 字符界面的完整多用戶模式,大多數服務器主機運行此級別 init  3 systemctl  isolate  mutil-user.target
4 未分配使用 init  4 systemctl  isolate  mutil-user.target
5 圖形界面的多用戶模式,提供了圖形桌面操作環境 init  5 systemctl  isolate  graphical.target
6 重新啟動主機 init  6 reboot
查看運行級別:

runlevel : 顯示切換前的運行級別 和當前運行級別 (6/7)
systemctl get-default : 顯示當前運行級別 (7)
永久設置開機模式

 systemctl set-default multi-user.target    開機默認為文本模式
 systemctl set-default graphical.target     開機默認為圖形模式
 修改 /etc/inittab 默認運行級別配置文件
二:Linux服務管理(service,systemctl)
Rhel6 用 service 和 chkconfig 來管理服務,它是 SystemV 架構下的一個工具。
Rhel7 是用 systemctl  來管理服務,它融合了之前的 service 和 chkconfig 的功能於一體。可以使用它永久性或只在當前會話中啟用/禁用服務。systemctl 是 systemd 架構下的一個工具。

動作 Rhel6 舊指令 Rhel7新指令
啟動某服務 service  httpd   start systemctl  start   httpd
停止某服務 service  httpd   stop  systemctl  stop   httpd
重啟某服務 service  httpd   restart systemctl  restart  httpd
檢查服務狀態 service  httpd  status systemctl  status  httpd
刪除某服務  chkconfig  --del  httpd 停掉應用,刪除其配置文件
使服務開機自啟動 chkconfig  --level   5  httpd   on systemctl   enable  httpd
使服務開機不自啟動 chkconfig  --level   5  httpd   off systemctl   disable  httpd
顯示所有已啟動的服務 chkconfig  --list systemctl list-unit-files | grep enabled
加入自定義服務 chkconfig  --add  test systemctl   load  test
查詢服務是否開機自啟 chkconfig --list | grep httpd systemctl  is-enabled   httpd
查看啟動失敗的服務   systemctl  --failed
systemd的一些常用命令:

列出所有可用單元 : systemctl  list-unit-files
列出所有運行的單元: systemctl list-unit-files | grep enabled 
列出所有可用服務:  systemctl list-unit-files  --type=service
列出所有運行的服務: systemctl list-unit-files  --type=service | grep enabled 
屏蔽httpd服務:systemctl  mask httpd
————————————————
版權聲明:本文為CSDN博主「謝公子」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_36119192/java/article/details/82415113


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM