日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 及其它类 Unix 系统的系统服务管理和控制程序(初始化系统/init system)简单梳理

發布時間:2023/12/3 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 及其它类 Unix 系统的系统服务管理和控制程序(初始化系统/init system)简单梳理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、Linux 的啟動過程
  • 二、初始化程序
    • (一)System V init
    • (二)Upstart init
    • (三)systemd
    • (四)Launchd
    • (五)Epoch
    • (六)Mudar

一、Linux 的啟動過程

在我們打開 Linux 電腦的電源后第一個啟動的進程就是 init。分配給 init 進程的 PID 是1。它是系統其他所有進程的父守護進程。 init 進程在 Start_kernel 執行完畢之后,也就是 Kernel 初始化完畢之后啟 動,它是系統所有進程的起點,內核在完成核內引導以后,即在本進程空間內加載 init 程序。

當一臺Linux電腦啟動后,處理器會先在系統存儲中查找BIOS,之后BIOS會檢測系統資源然后找到第一個引導設備,通常為硬盤,然后會查找硬盤的主引導記錄(MBR),然后加載到內存中并把控制權交給它,以后的啟動過程就由MBR控制。

主引導記錄會初始化引導程序(Linux上有兩個著名的引導程序,GRUB和LILO,80%的Linux系統在用GRUB引導程序),這個時候GRUB或LILO會加載內核模塊。內核會馬上查找/sbin下的“init”程序并執行它。從這里開始init成為了Linux系統的父進程。init讀取的第一個文件是 /etc/inittab,通過它init會確定我們Linux操作系統的運行級別。它會從文件 /etc/fstab 里查找分區表信息然后做相應的掛載。然后init 會啟動 /etc/init.d 或者 /etc/rc.d/init.d 里指定的默認啟動級別的所有服務/腳本。所有服務在這里通過init一個一個被初始化。在這個過程里,init每次只啟動一個服務(串行啟動),所有服務/守護進程都在后臺執行并由init來管理。

關機過程差不多是相反的過程,首先init停止所有服務,最后階段會卸載文件系統。

以上提到的啟動過程有一些不足的地方。而用一種更好的方式來替代傳統init的需求已經存在很長時間了。也產生了許多替代方案。其中比較著名的有Upstart,Epoch,Muda和Systemd。而Systemd獲得最多關注并被認為是目前最佳的方案。

二、初始化程序

(一)System V init

System V init 是類 Unix 操作系統傳統的也是首款初始化系統。

SysV init 守護進程是一個基于運行級別的系統,它使用運行級別(單用戶、多用戶以及其他更多級別)和鏈接(位于 /etc /rcN.d/ 目錄中,分別鏈接到 /etc/init.d 中的 init 腳本)來啟動和關閉系統服務。SysV啟動是線性、順序的。一個S20的服務必須要等待S19啟動完成才能啟動,如果一個啟動要花很多時間,那么后面的服務就算完全無關,也必須要等。

在 SysV init 中,服務被分成兩大類,一類是可獨立運行的服務,另一類是受xinetd管理的服務,而xinetd本身是一個獨立運行的服務,用來負責管理一些不常用的服務,當這些服務需要被使用時,由xinetd來喚醒它們,當服務使用完后,這些服務會被結束以減少系統資源的占用。

(二)Upstart init

Upstart init 是由 Ubuntu 的制造商開發的基于事件的初始化系統,用于替代 SysV init 初始化系統。它用于 Ubuntu 6.10 - 14.10 版本和基于 RHEL 6 的系統中,之后的被 systemd 取代了。

UpStart(Upstart init daemon)是基于事件的啟動系統,它使用事件來啟動和關閉系統服務。Upstart是并行的,只要事件發生,服務可以并發啟動。這種方式無疑要優越得多,因為它可以充分利用現在計算機多核的特點,大大減少啟動所需的時間。

Upstart是基于事件的,當系統中的什么情況發生變化時,它會運行某個特定的程序。這里被運行的程序多半是用來啟動或終止服務的腳本。這個配置方式和System V在系統進入某個運行級別的時候運行init腳本的鏈接的概念實際上是非常類似的。只不過Upstart更加靈活一些,Upstart不僅能在運行級別改變的時候啟動或終止服務,也能在接收到系統發生其他改變的信息的時候啟動或終止服務。這些系統的改變被稱為“事件”。例如,當Upstart從udev接收到運行時文件系統加載、打印機安裝或其他類似的設備添加或刪除的信息,并采取相應的行動。Upstart也可以在系統啟動、關閉或某個任務狀態改變的時候啟動或關閉服務。

UpStart 系統初始化的過程是在工作和事件的相互協作下完成的,可以大致描述為:系統上電后運行 GRUB 載入內核。內核執行硬件初始化和內核自身初始化。在內核初始化的最后,內核將啟動 pid 為 1 的 init 進程(即 UpStart 進程),init 進程運行后,init 進程自身會產生不同的事件,這些最初的事件會觸發一些工作運行,而每個工作運行過程中又會釋放不同的事件,這些事件又將觸發新的工作運行。如此反復,直到整個系統正常運行起來。

UpStart 是一個由事件觸發工作運行(事件驅動機制)的初始化系統,每一個程序的運行都由其依賴的事件發生而觸發的。UpStart 核心模塊就是 Job 和 Event。

(三)systemd

systemd 中文名叫“系統管理守護進程”,是旨在以并行方式啟動進程的替換傳統 init 系統的初始化系統,目前已經在許多標準發行版(Fedora,OpenSuSE,Arch,RHEL,CentOS 等)中應用。借鑒 Mac OS。

開發 systemd 的主要目的就是減少系統引導時間和計算開銷。systemd 最開始以GNU GPL協議授權開發,現在已轉為使用GNU LGPL協議,它是如今討論最熱烈的引導和服務管理程序。如果你的Linux系統配置為使用Systemd引導程序,它取替傳統的SysV init,啟動過程將交給systemd處理。systemd 的一個核心功能是它同時支持 SysV init的后開機啟動腳本。

(四)Launchd

launchd 是 Mac OS 下用于初始化系統環境的 init 系統,它是內核裝載成功之后在 OS 環境下啟動的第一個進程。其實 systemd 的很多概念來源于此。

(五)Epoch

一種基于簡單性的管理服務的 init 替換守護進程,旨在啟動單線程進程。

(六)Mudar

一種用Python編寫的 init 替換守護進程,在 Pardus GNU / Linux上實現,旨在異步啟動進程

總結

以上是生活随笔為你收集整理的Linux 及其它类 Unix 系统的系统服务管理和控制程序(初始化系统/init system)简单梳理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。