九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
linux /etc/rc.d/目錄的詳解
本文包括3部分內容
1、        Linux的引導過程
2、        運行級別
3、        /etc/rc.d/ 與/etc/rc.d/init.d的關系
都僅限于自身的理解,如有差錯和不足的地方請指正和補充!一起學習,一起進步。

        “/etc/rc.d/init.d/目錄下的腳本就類似與windows中的注冊表,在系統(tǒng)啟動的時候某些指定腳本將被執(zhí)行”。開始之前,先引用李善明經(jīng)理昨天晚上總結時的一個理解,讓大家先對init.d目錄有個大概的印象。在進入init.d之前,我們一起來做兩個準備工作,linux的引導過程和運行級別的概念。

一、        Linux的引導過程
系統(tǒng)啟動之后,在進入init.d之前,我們先來看看系統(tǒng)都做了什么工作,先看看一個圖(此圖來自網(wǎng)絡)



    從這個圖中,我們從比較高的角度去看開始引導的整個過程,比較清晰明了。系統(tǒng)加電之后,首先進行的硬件自檢,然后是bootloader對系統(tǒng)的初始化,加載內核。
    內核被加載到內存中之后,就開始執(zhí)行了。一旦內核啟動運行,對硬件的檢測就會決定需要對哪些設備驅動程序進行初始化。從這里開始,內核就能夠掛裝根文件系統(tǒng)(這個過程類似于Windows識別并存取C盤的過程)。內核掛裝了根文件系統(tǒng),并已初始化所有的設備驅動程序和數(shù)據(jù)結構等之后,就通過啟動一個叫init的用戶級程序,完成引導進程。

二、        運行級別(run level)
    Init進程是系統(tǒng)啟動之后的第一個用戶進程,所以它的pid(進程編號)始終為1。init進程上來首先做的事是去讀取/etc/目錄下inittab文件中initdefault id值,這個值稱為運行級別(run-level)。它決定了系統(tǒng)啟動之后運行于什么級別。運行級別決定了系統(tǒng)啟動的絕大部分行為和目的。這個級別從0到6 ,具有不同的功能。不同的運行級定義如下:
  # 0 - 停機(千萬別把initdefault設置為0,否則系統(tǒng)永遠無法啟動)
  # 1 - 單用戶模式
  # 2 - 多用戶,沒有 NFS
  # 3 - 完全多用戶模式(標準的運行級)
  # 4 – 系統(tǒng)保留的
  # 5 - X11 (x window)
  # 6 - 重新啟動 (千萬不要把initdefault 設置為6,否則將一直在重啟 )



這是兩個表較常用運行級別,左圖redhat9 級別3啟動的將是文本界面,右圖fc7級別5啟動的將是圖形界面。

三、        /etc/rc.d/與/etc/rc.d/init.d的關系
    寫到這里,應該差不多要進入init.d了,可是我覺得單寫/etc/rc.d/init.d的話不一定能說得清楚明白,就拿它跟/etc/rc.d這個它上一級的目錄一起來討論,可能比較合適一些,因為他們之間有著千絲萬縷的關系。
    在這里先解釋一下init.d里面放的都是什么東西。這個目錄存放的是一些腳本,一般是linux以rpm包安裝時設定的一些服務的啟動腳本。系統(tǒng)在安裝時裝了好多rpm包,這里面就有很多對應的腳本。執(zhí)行這些腳本可以用來啟動,停止,重啟這些服務。
前面說到,/etc/rc.d/init.d這個目錄下的腳本就類似與windows中的注冊表,在系統(tǒng)啟動的時候執(zhí)行。程序運行到這里(init進程讀取了運行級別),相信從命名的角度大家也能猜到該運行/etc/rc.d/init.d里面的腳本了,不然它為什么也叫init(.d)呢是吧。沒錯,是該運行init.d里的腳本了,但是并不是直接運行,而是有選擇的因為系統(tǒng)并不需要啟動所有的服務。
    那么,系統(tǒng)是如何選擇哪些需要啟動哪些不要呢?這時剛才說的運行級別就起作用了。
    在決定了系統(tǒng)啟動的run level之后,/etc/rc.d/rc這個腳本先執(zhí)行。在RH9和FC7的源碼中它都是一上來就check_runlevel()(雖然實現(xiàn)的代碼不一樣,也大同小異),知道了運行級別之后,對于每一個運行級別,在rc.d下都有一個子目錄分別是rc0.d,rc1.d ….. rc6.d。每個目錄下都是到init.d目錄的一部分腳本一些鏈接。每個級別要執(zhí)行哪些服務就在相對應的目錄下,比如級別5要啟動的服務就都放在rc5.d下,但是放在這個rc5.d下的都是一些鏈接文件,鏈接到init.d中相對應的文件,真正干活的init.d里的腳本。

redhat9    ls


fc7          ls -l


    這樣看的就很清楚了。

    到這里,估計大家可能都比較清楚了,我開始也以為是這樣的??墒呛髞砦易屑毧催^和比較這些鏈接文件和init.d里真正被執(zhí)行的腳本的文件名之后,一直有幾個問題沒弄明白。借著寫這個文章的機會,我做了一些功課,總算是大概解開了那些疑惑。
1、這些鏈接文件前面為什么會帶一個Kxx或者Sxx呢?
    是這樣的,帶K的表示停止(Kill)一個服務,S表示開啟(Start)的意思
2、K和S后面帶的數(shù)字呢?干什么用的
    這個我開始的時候還以為是排列起來好看或者數(shù)數(shù)用呢(是不是很幼稚?)。后來發(fā)現(xiàn)不是的。它的作用是用來排序,就是決定這些腳本執(zhí)行的順序,數(shù)值小的先執(zhí)行,數(shù)值大的后執(zhí)行。很多時候這些執(zhí)行順序是很重要的,比如要啟動Apache服務,就必須先配置網(wǎng)絡接口,不然一個沒有IP的機子來啟動http服務那豈不是很搞笑。。。
3、無意中我發(fā)現(xiàn)同一個服務帶S的和帶K的鏈接到init.d之后是同一個腳本。我就納悶了,為什么會是執(zhí)行同一個腳本呢?
    這個時候真是S和K的妙用了,原來S和K并不止是用來看起來分的清楚而已。S給和K還分別給init.d下面的腳本傳遞了start和stop的參數(shù)。哦,是這樣的(煥然大悟的樣子,呵呵)!這時我才想起來原來曾經(jīng)無數(shù)用過的/etc/rc.d/init.d/network restart命令。原來傳S時相當于執(zhí)行了/etc/rc.d/init.d/xxx start這條命令,當然K就相當于/etc/rc.d/init.d/xxx stop了。

rc.d的內容如下:
init.d/ :各種服務器和程序的二進制文件存放目錄。
rcx.d/: 各個啟動級別的執(zhí)行程序連接目錄。里頭的東西都是指向init.d/的一些軟連接。具體的后邊敘述。
還有三個腳本:rc.sysinit, rc, rc.local

redhat的啟動方式和執(zhí)行次序是:
加載內核
執(zhí)行init程序
/etc/rc.d/rc.sysinit # 由init執(zhí)行的第一個腳本
/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL為缺省的運行模式
/etc/rc.d/rc.local
/sbin/mingetty # 等待用戶登錄

在Redhat中,/etc/rc.d/rc.sysinit主要做在各個運行模式中相同的初始化工作,包括:
調入keymap以及系統(tǒng)字體
啟動swapping
設置主機名
設置NIS域名
檢查(fsck)并mount文件系統(tǒng)
打開quota
裝載聲卡模塊
設置系統(tǒng)時鐘
等等。


/etc/rc.d/rc則根據(jù)其參數(shù)指定的運行模式(運行級別,你在inittab文件中可以設置)來執(zhí)行相應目錄下的腳本。凡是以Kxx開頭的
,都以stop為參數(shù)來調用;凡是以Sxx開頭的,都以start為參數(shù)來調用。調用的順序按xx
從小到大來執(zhí)行。例如,假設缺省的運行模式是3,/etc/rc.d/rc就會按上述方式調用
/etc/rc.d/rc3.d/下的腳本。
值得一提的是,Redhat中的運行模式2、3、5都把/etc/rc.d/rc.local做為初始化腳本中
的最后一個,所以用戶可以自己在這個文件中添加一些需要在其他初始化工作之后,登錄之前執(zhí)行的命令。

init在等待/etc/rc.d/rc執(zhí)行完畢之后(因為在/etc/inittab中/etc/rc.d/rc的
action是wait),將在指定的各個虛擬終端上運行/sbin/mingetty,等待用戶的登錄。
至此,LINUX的啟動結束。 

 

最后自己補充一些:

1. 許多網(wǎng)絡服務都由超級服務/etc/rc.d/init.d/xinetd啟動,這些服務的配置文件在/etc/xinetd.d/目錄下,

如telnet就是由xinetd啟動的,其配置文件如下(fc7)

  1 # default: on
  2 # description: The telnet server serves telnet sessions; it uses /
  3 #   unencrypted username/password pairs for authentication.
  4 service telnet
  5 {
  6     flags       = REUSE
  7     socket_type = stream
  8     wait        = no
  9     user        = root
 10     server      = /usr/sbin/in.telnetd
 11     log_on_failure  += USERID
 12     disable     = no
 13 }
修改配置文件以后,重啟xinetd服務即可.

2. 除了直接調用腳本外(如/etc/rc.d/init.d/xinetd),還可以用service命令來控制init.d目錄下的服務,

     如 service xinetd restart,

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linux 運行級init詳解||Linux|
Ubuntu管理開機啟動項(服務) - Tolecen的日志 - 網(wǎng)易博客
關于Ubuntu 12.04修改默認運行級別,啟動字符界面的個人理解
linux系統(tǒng)設置程序開機啟動(以mysql為例)
(轉)Linux下/etc/rc.local與/etc/init.d的區(qū)別與聯(lián)系
linux系統(tǒng)啟動腳本
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服