linux開機啓動腳本的順序

下開機自動啓動腳本所涉及的知識和方法、如下:


<span>、相關基礎知識點</span>


1</span>
<span>)<span lang="EN-US">redhat</span>
的啓動方式和執行次序是: </span>


</span>
<span>加載內核 </span>


</span>
<span>執行<span lang="EN-US">init</span>
程序 </span>


/etc/rc.d/rc.sysinit # </span>
<span>由<span lang="EN-US">init</span>
執行的第一個腳本 </span>


/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL</span>
<span>爲缺省的運行模式 </span>


/etc/rc.d/rc.local<span>???? </span>
#</span>
<span>相應級別服務啓動之後、在執行該文件(其實也可以把需要執行的命令寫到該文件中)</span>


/sbin/mingetty # </span>
<span>等待用戶登錄 </span>


</span>


</span>
<span>在<span lang="EN-US">Redhat</span>
中,<span lang="EN-US">/etc/rc.d/rc.sysinit</span>
主要做在各個運行模式中相同的初始化工作,包括:
</span>


</span>
<span>調入<span lang="EN-US">keymap</span>
以及系統字體 </span>


</span>
<span>啓動<span lang="EN-US">swapping </span>
</span>


</span>
<span>設置主機名 </span>


</span>
<span>設置<span lang="EN-US">NIS</span>
域名 </span>


</span>
<span>檢查(<span lang="EN-US">fsck</span>
)並<span lang="EN-US">mount</span>
文件系統 </span>


</span>
<span>打開<span lang="EN-US">quota </span>
</span>


</span>
<span>裝載聲卡模塊
</span>


</span>
<span>設置系統時鐘
</span>


</span>
<span>等等。 </span>


/etc/rc.d/rc</span>
<span>則根據其參數指定的運行模式<span lang="EN-US">(</span>
運行級別,你在<span lang="EN-US">inittab</span>
文件中可以設置<span lang="EN-US">)</span>
來執行相應目錄下的腳本。凡是以<span lang="EN-US">Kxx</span>
開頭的 </span>


</span>
<span>,都以<span lang="EN-US">stop</span>
爲參數來調用;凡是以<span lang="EN-US">Sxx</span>
開頭的,都以<span lang="EN-US">start</span>
爲參數來調用。調用的順序按<span lang="EN-US">xx </span>
</span>


</span>
<span>從小到大來執行。<span lang="EN-US">(</span>
其中<span lang="EN-US">xx</span>
是數字、表示的是啓動順序<span lang="EN-US">)</span>
例如,假設缺省的運行模式是<span lang="EN-US">3</span>
,<span lang="EN-US">/etc/rc.d/rc</span>
就會按上述方式調用 </span>


/etc/rc.d/rc3.d/</span>
<span>下的腳本。 </span>


</span>
<span>值得一提的是,<span lang="EN-US">Redhat</span>
中的運行模式<span lang="EN-US">2</span>
、<span lang="EN-US">3</span>
、<span lang="EN-US">5</span>
都把<span lang="EN-US">/etc/rc.d/rc.local</span>
做爲初始化腳本中 </span>


</span>
<span>的最後一個,所以用戶可以自己在這個文件中添加一些需要在其他初始化工作之後,登錄之前執行的命令。
</span>


</span>


init</span>
<span>在等待<span lang="EN-US">/etc/rc.d/rc</span>
執行完畢之後(因爲在<span lang="EN-US">/etc/inittab</span>
中<span lang="EN-US">/etc/rc.d/rc</span>
的 </span>


action</span>
<span>是<span lang="EN-US">wait</span>
),將在指定的各個虛擬終端上運行<span lang="EN-US">/sbin/mingetty</span>
,等待用戶的登錄。
</span>


</span>
<span>至此,<span lang="EN-US">LINUX</span>
的啓動結束。</span>


2</span>
<span>)<span lang="EN-US">init</span>
運行級別及指令</span>


</span>
<span>一、什麼是<span lang="EN-US">INIT: </span>
</span>


是<span lang="EN-US">Linux</span>
系統操作中不可缺少的程序之一。 </span>


進程,它是一個由內核啓動的用戶級進程。
</span>


的方式,完成引導進程。所以<span lang="EN-US">,init</span>
始終是第一個進程(其進程編號始終爲<span lang="EN-US">1</span>
)。 </span>


的幾個地方查找它,它的正確位置(對<span lang="EN-US">Linux</span>
系統來說)是<span lang="EN-US">/sbin/init</span>
。如果內核找不到<span lang="EN-US">init</span>
,它就會試着運行<span lang="EN-US">/bin/sh</span>
,如果運行失敗,系統的啓動也會失敗。
</span>


到<span lang="EN-US">6 </span>
,具有不同的功能。 </span>


停機(千萬不能把<span lang="EN-US">initdefault </span>
設置爲<span lang="EN-US">0 </span>
) </span>


單用戶模式<span lang="EN-US"><span>????????????????????????????????????
</span>
# s<span>?? </span>
init s = init 1</span>
</span>


多用戶,沒有<span lang="EN-US"> NFS </span>
</span>


完全多用戶模式<span lang="EN-US">(</span>
標準的運行級<span lang="EN-US">) </span>
</span>


沒有用到 </span>


多用戶圖形模式(<span lang="EN-US">xwindow) </span>
</span>


重新啓動 (千萬不要把<span lang="EN-US">initdefault </span>
設置爲<span lang="EN-US">6 </span>
) </span>


文件裏指定。這個文件是<span lang="EN-US">init </span>
程序尋找的主要文件,最先運行的服務是放在<span lang="EN-US">/etc/rc.d</span>
</span>


發行版本中,啓動腳本都是位於<span lang="EN-US"> /etc/rc.d/init.d</span>
中的。這些腳本被用<span lang="EN-US">ln </span>
命令連接到</span>


<span>目錄。<span lang="EN-US">(</span>
這裏的<span lang="EN-US">n </span>
就是運行級<span lang="EN-US">0-6) </span>
</span>


3</span>
<span>):<span lang="EN-US">chkconfig </span>
命令(<span lang="EN-US">redhat </span>
操作系統下)</span>


</span>


或者<span lang="EN-US"> Windows</span>
,<span lang="EN-US">Linux </span>
可以有多種運行級。常見的就是多用戶的<span lang="EN-US">2,3,4,5 </span>
,很多人知道<span lang="EN-US"> 5 </span>
是運行<span lang="EN-US">
X-Windows</span>
</span>


就<span lang="EN-US"><span>????? </span>
</span>
是關機了。運行級的改變可以通過<span lang="EN-US"> init </span>
命令來切換。例如,假設你要維護系統進入單用戶狀態,那麼,可以使用</span>


<span>來切換。在<span lang="EN-US"><span>??????
</span>
Linux </span>
的運行級的切換過程中,系統會自動尋找對應運行級的目錄<span lang="EN-US">/etc/rc[0-6].d</span>
下的<span lang="EN-US">K </span>
和</span>


<span>開頭的文件,按後面的數字順序,執行這<span lang="EN-US"><span>????? </span>
</span>
些腳本。對這些腳本的維護,是很繁瑣的一件事情,<span lang="EN-US">Linux </span>
提供了<span lang="EN-US">chkconfig</span>
</span>


</span>
<span>語法爲: </span>


</span>


chkconfig --list [name] </span>


chkconfig --add name </span>


chkconfig --del name </span>


chkconfig [--level levels] name </span>


chkconfig [--level levels] name </span>


</span>


chkconfig </span>
<span>有五項功能:添加服務,刪除服務,列表服務,改變啓動信息以及檢查特定服務的啓動狀態。
</span>


</span>


chkconfig </span>
<span>沒有參數運行時,顯示用法。如果加上服務名,那麼就檢查這個服務是否在當前運行級啓動。如果是,返回<span lang="EN-US"> true</span>
,否則返回<span lang="EN-US"><span>????? </span>
false</span>
。<span lang="EN-US"> --level </span>
選項可以指定要查看的運行級而不一定是當前運行級。
</span>


</span>


</span>
<span>如果在服務名後面指定了<span lang="EN-US">on</span>
,<span lang="EN-US">off </span>
或者<span lang="EN-US"> reset</span>
,那麼<span lang="EN-US"> chkconfig </span>
會改變指定服務的啓動信息。<span lang="EN-US">on </span>
和<span lang="EN-US"> off </span>
分別指服務在改變運行級時的<span lang="EN-US"><span>????? </span>
</span>
啓動和停止。<span lang="EN-US">reset </span>
指初始化服務信息,無論有問題的初始化腳本指定了什麼。
</span>


</span>


</span>
<span>對於<span lang="EN-US"> on </span>
和<span lang="EN-US"> off </span>
開關,系統默認只對運行級<span lang="EN-US"> 3</span>
,<span lang="EN-US">4</span>
,<span lang="EN-US"> 5</span>
有效,但是<span lang="EN-US"> reset </span>
可以對所有運行級有效。指定<span lang="EN-US"> --level </span>
選項時,可以選擇特<span lang="EN-US"><span>?????? </span>
</span>
定的運行級。 </span>


</span>


</span>
<span>需要說明的是,對於每個運行級,只能有一個啓動腳本或者停止腳本。當切換運行級時,<span lang="EN-US">init </span>
不會重新啓動已經啓動的服務,也不會再<span lang="EN-US"><span>????? </span>
</span>
次去停止已經停止的服務。 </span>


</span>


</span>
<span>選項介紹: </span>


</span>


--level levels </span>


</span>
<span>指定運行級,由數字<span lang="EN-US"> 0 </span>
到<span lang="EN-US"> 7 </span>
構成的字符串,如: </span>


</span>


--level 35 </span>
<span>表示指定運行級<span lang="EN-US">3 </span>
和<span lang="EN-US">5</span>
。 </span>


</span>
<span>要在運行級別<span lang="EN-US">3</span>
、<span lang="EN-US">4</span>
、<span lang="EN-US">5</span>
中停運<span lang="EN-US"> nfs </span>
服務,使用下面的命令:<span lang="EN-US">chkconfig --level 345 nfs
off</span>
</span>


</span>


--add name </span>


</span>
<span>這個選項增加一項新的服務,<span lang="EN-US">chkconfig </span>
確保每個運行級有一項 啓動<span lang="EN-US">(S) </span>
或者 殺死<span lang="EN-US">(K) </span>
入口。如有缺少,則會從缺省的<span lang="EN-US">init </span>
腳本自動<span lang="EN-US"><span>????? </span>
</span>
建立。 </span>


</span>


--del name </span>


</span>
<span>用來刪除服務,並把相關符號連接從<span lang="EN-US"> /etc/rc[0-6].d </span>
刪除。 </span>


</span>


--list name </span>


</span>
<span>列表,如果指定了<span lang="EN-US">name </span>
那麼只是顯示指定的服務名,否則,列出全部服務在不同運行級的狀態。 </span>


</span>


</span>
<span>運行級文件 </span>


</span>


</span>
<span>每個被<span lang="EN-US">chkconfig </span>
管理的服務需要在對應的<span lang="EN-US">init.d </span>
下的腳本加上兩行或者更多行的註釋。
</span>


</span>
<span>第一行告訴<span lang="EN-US"> chkconfig </span>
缺省啓動的運行級以及啓動和停止的優先級。如果某服務缺省不在任何運行級啓動,那麼使用<span lang="EN-US"> - </span>
代替運行級。 </span>


</span>
<span>第二行對服務進行描述,可以用
跨行註釋。 </span>


</span>


</span>
<span>例如,<span lang="EN-US">random.init </span>
包含三行: </span>


# chkconfig: 2345 20 80 </span>


# description: Saves and restores system
entropy pool for </span>


# higher quality random number generation.
</span>


</span>
<span>表明<span lang="EN-US"> random </span>
腳本應該在運行級<span lang="EN-US"> 2, 3, 4, 5 </span>
啓動,啓動優先權爲<span lang="EN-US">20</span>
,停止優先權爲<span lang="EN-US"> 80</span>
。 </span>


</span>


</span>
<span>好了,介紹就到這裏了,去看看自己目錄下的<span lang="EN-US">/etc/rc.d/init.d </span>
下的腳本吧。<span lang="EN-US"><span>? </span>
</span>
</span>


</span>


</span>
<span>設置自啓動服務<span lang="EN-US">:chkconfig --level 345 nfs on</span>
</span>


</span>


<span>實例介紹:</span>


</span>


<span>、在<span lang="EN-US">linux</span>
下安裝了<span lang="EN-US">apache </span>
服務(通過下載二進制文件經濟編譯安裝、而非<span lang="EN-US">rpm</span>
包)、<span lang="EN-US">apache </span>
服務啓動命令:<span lang="EN-US"><span>?????????? </span>
</span>
</span>


</span>
<span>。讓<span lang="EN-US">apache</span>
服務運行在運行級別<span lang="EN-US">3</span>
下面。<span lang="EN-US"><span>? </span>
</span>
命令如下:</span>


</span>


1</span>
<span>)<span lang="EN-US">touch /etc/rc.d/init.d/apache</span>
</span>


vi /etc/rc.d/init.d/apache</span>


chown -R root /etc/rc.d/init.d/apache</span>


chmod 700 /etc/rc.d/init.d/apache</span>


</span>

ln -s /etc/rc.d/init.d/apache
/etc/rc.d/rc3.d/S60apache <span>??</span>
#S</span>


的簡寫、代表啓動、<span lang="EN-US">K</span>
是<span lang="EN-US">kill</span>
的簡寫、代表關閉。<span lang="EN-US">60</span>
數字<span lang="EN-US"><span>?????? </span>
</span>
</span>


系統而言、許多服務都是建立在數據庫啓動的前提下才能夠正常啓動的、可以通過該數字就行調整腳本的<span lang="EN-US"><span>????? </span>
</span>
</span>


</span>


apache</span>
<span>的內容:</span>


#!/bin/bash</span>


#Start httpd service</span>


/server/apache/bin/apachectl start</span>


</span>


</span>
<span>至此<span lang="EN-US"> apache</span>
服務就可以在運行級別<span lang="EN-US">3</span>
下 隨機自動啓動了。(可以結合<span lang="EN-US">chkconfig </span>
對啓動服務進行相應的調整)。</span>


所以以下啓動順序僅供參考</span>

Redhat Redflag centos fc
linux</span>
系統裏面腳本的啓動</span>


進行啓動<span lang="EN-US"> vmlinuz</span>
</span>


</span>


<span>裏面的腳本)</span>


登錄界面<span lang="EN-US"> login</span>
</span>


在用戶登錄的時候執行<span lang="EN-US">sh</span>
腳本的順序:每次登錄的時候都會完全執行的</span>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章