天天看點

6個Linux chkconfig指令執行個體 - 增加,删除,檢視和修改services的自動啟動選項

注意: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

# ./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檔案;

--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 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

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