Linux啓動過程

Linux的啓動過程:

  • 連通電源
  • 固件加電自檢
  • 自舉程序BootLoader(GRUB)
  • 載入內核
  • 啓動Init進程
  • 讀取/etc/inittab,找到啓動級別n
  • 讀取/etc/rc.d/rc.sysinit
  • 找/etc/rcn.d中的啓動服務,啓動對應的服務


注:所有的服務的控制腳本都在/etc/init.d目錄中,所有rc目錄中的腳本都是它的符號鏈接,其中以S開頭的是該級別下要啓動的服務,以K開頭的是該級別下要關閉的服務。


使用chkconfig命令改變服務的啓動情況


引用幾個例子:(http://www.cnblogs.com/itech/archive/2011/08/22/2149018.html)

注意:service的安裝目錄在/etc/rc.d/init.d下,/etc/init.d 是/etc/rc.d/init.d的鏈接。

chkconfig命令用來安裝,查看或修改 services隨系統啓動的啓動選項的設置。本文章包含了7個實例來解釋如何使用chkconfig命令。

1 在shell腳本中檢查service的啓動選項的設置

當你執行chkconfig加service名字,如果service被配置爲自動啓動,則它將返回true。下列的代碼段顯示瞭如何在腳本中檢查一個service是否被配置爲自動啓動。

# vi check.sh
chkconfig network && echo "Network service is configured"
chkconfig junk && echo "Junk service is configured"

# ./check.sh
Network service is configured

你也可以特別地查看它是否配置爲在某個run level自動啓動。

# vi check1.sh
chkconfig network --level 3 && echo "Network service is configured for level 3"
chkconfig network --level 1 && echo "Network service is configured for level 1"

# ./check1.sh
Network service is configured for level 3

2 查看所有的services的啓動選項的設置

--list選項顯示所有的services的啓動選項的配置狀態。

# chkconfig --list
abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
...

只查看在某個runlevel啓動的services,例如查看在runlevel3下自動啓動的services。

chkconfig --list | grep 3:on

查看某個service的啓動選項的設置,也可以對chkconfig --list 的output使用grep,例如:chkconfig --list | grep network

3 增加一個新的service爲自動啓動

使用-add選項來增加某個service,使其能夠在系統啓動的時候自動地啓動。

下列的實例顯示瞭如何增加一個新的service iptables,使其能夠在系統啓動的時候自動地啓動。使用‘chkconfig --add’命令將自動地設置在runlevel 2,3,4,5上自動地啓動。

# chkconfig --list | grep iptables
# chkconfig --add iptables
# chkconfig --list | grep iptables
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

注意:”chkconfig --add“ 只是設置一個存在的service爲自動啓動,此service必須已經安裝,即已經存在於/etc/rc.d/init.d下。如果service不存在,你需要首先安裝service到/etc/rc.d/init.d下,然後再爲其設置自動啓動選項。這是很多的初學者都容易犯的錯誤,所以值得在這裏強調。

4 刪除某個service的自動啓動選項的設置

下列的實例顯示了ip6tables service被配置爲自動啓動。
# chkconfig --list | grep ip6tables
ip6tables 0:off 1:off 2:off 3:on 4:off 5:off 6:off

要刪除某個service的自動啓動的設置,使用--del選項,如下:
# chkconfig --del ip6tables
# chkconfig --list | grep ip6tables

5 設置或取消某個service在某個runlevel的自動啓動設置
有時你可能不想取消整個service的自動啓動的設置,你只是需要設置或取消service在某個runlevel的自動啓動的設置,

下列的實例將取消nfserver service在runlevel5的自動啓動設置
# chkconfig --level 5 nfsserver off
你也可以組合多個runlevel,例如你可以取消nfserver在runlevel3和5的自動啓動設置
# chkconfig --level 35 nfsserver off

6 chkconfig 與 rc*.d目錄下的腳本 (*表示runlevel1-6)
當你使用chkconfig來增加或刪除某個service的自動啓動選項的設置的時候,其實是在rc*.d目錄下做下列的事情:
當chkconfig --add命令執行的時候,其實是在對應的rc*.d目錄下創建相應用來啓動和停止service的service的symbollink文件;
當chkconfig --del命令執行的時候,其實是在對應的rc*.d目錄下刪除相應用來啓動和停止service的service的symbollink文件;

rc*.d目錄下與某個service關聯的2個symbollink文件中,以K(kill)開始的表示此文件用來停止service,以S(start)開始的表示此文件用來啓動service。

例如service nfsserver沒有設置自動啓動選項的時候,我們在/rc*.d下看不到用來啓動和停止service的symbollink文件

# chkconfig --list | grep nfsserver
nfsserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off

# ls /etc/rc.d/rc3.d | grep nfsserver
# ls /etc/rc.d/rc5.d | grep nfsserver

當我們爲nfsserver service設置自動啓動選項後,我們就可以看到相應的symbollink文件了
# chkconfig --add nfsserver
nfsserver 0:off 1:off 2:off 3:on 4:off 5:on 6:off

# cd /etc/rc.d/rc3.d
# ls -l | grep nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver -> ../init.d/nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../init.d/nfsserver

# cd /etc/rc.d/rc5.d
# ls -l | grep nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver ->../init.d/nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../init.d/nfsserver

當你取消此service在某個runlevel的自動啓動選項的設置的時候,對應的rc*.d目錄下的symbollink文件也將被自動的刪除,

# chkconfig --level 5 nfsserver off
# ls /etc/rc.d/rc5.d | grep nfsserver



發佈了65 篇原創文章 · 獲贊 34 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章