1. 程式人生 > >/etc/rc.d/init.d 目錄的一點理解

/etc/rc.d/init.d 目錄的一點理解

一、Linux的引導過程

  系統啟動之後,在進入init.d之前,我們先來看看系統都做了什麼工作。系統加電之後,首先進行的硬體自檢,然後是bootload對系統的初始化,載入核心。

核心被載入到記憶體之後,就開始執行了。一旦核心啟動執行,對硬體的檢測就會決定需要對哪些裝置驅動進行初始化。

從這開始,核心就能夠掛裝根檔案系統(這個過程類似於Windows識別並存取C盤的過程)。核心掛裝了根檔案系統,並已初始化所有的裝置驅動程式和資料結構等之後,就通過啟動一個叫init的使用者級程式,完成引導程序。

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

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

到這裡,估計大家可能都比較清楚了,我開始也以為是這樣的。可是後來我仔細看過和比較這些連結檔案和init.d裡真正被執行的指令碼的檔名之後,一直有幾個問題沒弄明白。藉著寫這個文章的機會,我做了一些功課,總算是大概解開了那些疑惑。
  1、這些連結檔案前面為什麼會帶一個Kxx或者Sxx呢?
  是這樣的,帶K的表示停止(Kill)一個服務,S表示開啟(Start)的意思
  2、K和S後面帶的數字呢?幹什麼用的
  這個我開始的時候還以為是排列起來好看或者數數用呢。後來發現不是的。它的作用是用來排序,就是決定這些指令碼執行的順序,數值小的先執行,數值大的後執行。很多時候這些執行順序是很重要的,比如要啟動Apache服務,就必須先配置網路介面,不然一個沒有IP的機子來啟動http服務那豈不是很搞笑。。。
  3、無意中我發現同一個服務帶S的和帶K的連結到init.d之後是同一個指令碼。我就納悶了,為什麼會是執行同一個指令碼呢?
  這個時候真是S和K的妙用了,原來S和K並不止是用來看起來分的清楚而已。S給和K還分別給init.d下面的指令碼傳遞了start和stop的引數。哦,是這樣的(煥然大悟的樣子,呵呵)!這時我才想起來原來曾經無數用過的/etc/rc.d/init.d/network restart命令。原來傳S時相當於執行了/etc/rc.d/init.d/xxx start這條命令,當然K就相當於/etc/rc.d/init.d/xxx stop了。

 

四、/etc/init.d 是 指向  /etc/rc.d/init.d 的軟連結

   

相關推薦

/etc/rc.d/init.d 目錄一點理解

一、Linux的引導過程   系統啟動之後,在進入init.d之前,我們先來看看系統都做了什麼工作。系統加電之後,首先進行的硬體

linux 執行級別,linux執行流程 /etc/rc.d/init.d目錄理解

一、Linux的引導過程  系統啟動之後,在進入init.d之前,我們先來看看系統都做了什麼工作。系統加電之後,首先進行的硬體自檢,然後是bootload對系統的初始化,載入核心。核心被載入到記憶體之後,就開始執行了。一旦核心啟動執行,對硬體的檢測就會決定需要對哪些裝置驅動進

centos7.5 /etc/rc.d/init.d/functions: No such file or directory

yum install initscripts -y 還有個問題:/etc/sysconfig/network : No such file or directory   1,touch /network 即可。 或者:   1,echo "NETW

/etc/rc.d/init.d自啟動程式說明

linux有自己一套完整的啟動體系,抓住了linux啟動的脈絡,linux的啟動過程將不再神祕。 本文中假設inittab中設定的init tree為: /etc/rc.d/rc0.d /etc/rc.d/rc1.d /etc/rc.d/rc2.d /etc/rc.d/rc3.d /etc/rc.d/r

【轉】/etc/rc.d/rc與/etc/rc.d/init.d的關係介紹

/etc/rc.d/init.d這個目錄下的指令碼就類似與windows中的登錄檔,在系統啟動的時候執行。程式執行到這裡(init程序讀取了執行級別),相信從命名的角度大家也能猜到該執行/etc/rc.d/init.d裡面的指令碼了,不然它為什麼也叫init(.d)呢是吧。沒錯,是該執行init.d裡的指令碼

/etc/rc.d/init.d/functions檔案詳細分析

functions這個指令碼是給/etc/init.d裡邊的檔案使用的(可理解為全域性檔案)。 提供了一些基礎的功能,看看裡邊究竟有些什麼。首先會設定umask,path,還有語言環境,然後會設定success,failure,warning,normal幾種情況下的字

/etc/rc.d/init.d/functions 指令碼詳解【如何寫出像紅帽一樣NB的啟動指令碼】

以往寫伺服器啟動指令碼,關閉服務時,大多采用找PS-EF | GREP xxxx ,來 PID的方法,若執行成功,則echo .......... [ok],等等,總覺得不是很專業,,但凡看過REDHAT的啟動指令碼,他根本就沒這些字眼,那麼他是怎麼實現的呢? 看完下面這篇

Center OS 7 /etc/rc.d/init.d/network, status=6

答案 required for static ip clas sysconfig fix 報錯 red service network restart 報錯 Center OS 7 /etc/rc.d/init.d/network status=6 google上找到答案

理解Linux系統/etc/init.d目錄和/etc/rc.local指令碼

     以下內容是作者自己的翻譯版本,如需轉載到CSDN外其他網站,請註明本文連結。  一、關於/etc/init.d      如果你使用過linux系統,那麼你一定聽說過init.d目錄。這個目錄到底是幹嘛的呢?它歸根結底只做了一件事情,但這件事情非同小可,是為整個

理解Linux系統/etc/init.d目錄和/etc/rc.local指令碼(轉)

原連結;http://blog.csdn.net/acs713/article/details/7322082  一、關於/etc/init.d      如果你使用過linux系統,那麼你一定聽說過init.d目錄。這個目錄到底是幹嘛的呢?它歸根結底只做了一件事情,但這

/etc/rc.local 與 /etc/init.d Linux 開機自動執行程式

轉載地址:https://www.cnblogs.com/fatt/p/4790561.html 1. /etc/rc.local 這是使用者自訂開機啟動程式,把需要開機自動執行的程式寫在這個腳本里 --------引用---------------------- 在完成 run

Linux系列:Linux下/etc/rc.local與/etc/init.d的區別與聯絡

1. /etc/rc.local 這是使用者自定義開機啟動程式,把需要開機自動執行的程式寫在這個腳本里再完成 run level 3 的服務啟動後, 如果我還有其他的動作想要完成時,舉例來說, 我還想要寄一封 mail 給某個系統管理帳號,通知他,系統剛剛重新開機完畢,那

/etc/init.d/iptables stop

init.d con nta alt init containe stop lin num /etc/init.d/iptables stop /etc/init.d/iptables stop

centos7 /etc/rc.local需要chmod +x /etc/rc.d/rc.local

開機啟動 style 安裝centos7 spa please 軟連接 pos 一句話 pat Centos 7.0設置/etc/rc.local無效問題解決 安裝centos7以後按照以往習慣修改rc.local添加開機啟動命令,但重啟後發現無效,再次重啟發現依然如故

雙網卡centos7 iptables防火墻與/etc/rc.d/rc.local開機運行

linuxchmod a+x /etc/rc.d/rc.localvim /etc/rc.d/rc.localecho 1 > /proc/sys/net/ipv4/ip_forwardiptables -Fiptables -Ziptables -Xiptables -t nat -I POST

Linux根文件皇冠體育平臺開發系統:/etc/init.d/rcS文件分析

mnt 單純 應用程序 類型 hostname con rc.d 節點 fst rcS文件的作用皇冠體育平臺開發論壇:haozbbs.com Q1446595067 rcS是一個腳本文件,在inittab文件中本解析調用,用於配置Linux系統。2.rcS文件分析 #!

CentOS中service命令與/etc/init.d的關系以及centos7的變化

emc web 服務控制 pos mfs 繼承 例如 特性 entos 緣由由於個人經常在ubuntu和centos 系統中切換,習慣了以前的 ubuntu中 通過 /etc/init.d/xxx 進行軟件服務控制。後來發現centos7中換了服務的控制方式:service

/etc/init.d/functions

/etc/init.d/functions: [[email protected] ~]# vim /etc/init.d/functions  #僅展示前幾行 # -*-Shell-script-*- # # functi

sh: /etc/init.d/sshd: not found Docker中的Alpine映象安裝sshd無法啟動

問題描述 在Alpine映象中安裝了openssh-server和openssh之後,無法執行ssh localhost。發現未啟動服務,開啟服務時報以下錯誤 / # ls /etc/init.d/sshd /etc/init.d/sshd / # /etc/init.d/sshd status sh:

/etc/rc.d/rc.sysinit

nts his blkid ucc clust modules scan wait setup [root@web02 ~]# ls /etc/rc.d/rc.sysinit /etc/rc.d/rc.sysinit [root@web02 ~]# [root@