- 使用語法:
chkconfig [--add][--del][--list][系統服務] 或 chkconfig [--level <等級代號>][系統服務][on/off/reset]
chkconfig在沒有參數運行時,顯示用法。如果加上服務名,那么就檢查這個服務是否在當前運行級啟動。如果是,返回true,否則返回false。如果在服務名后面指定了on,off或者reset,那么chkconfi 會改變指 定服務的啟動信息。on和off分別指服務被啟動和停止,reset指重置服務的啟動信息,無論有問題的初始化腳本指定了什么。on和off開關,系統默認只對運行級3,4,5有效,但是reset可以對所有運行級有效。
- 使用參數:
chkconfig --list [name]:顯示所有運行級系統服務的運行狀態信息(on或off)。如果指定了name,那么只顯示指定的服務在不同運行級的狀態。
chkconfig --add name:增加一項新的服務。chkconfig確保每個運行級有一項啟動(S)或者殺死(K)入口。如有缺少,則會從缺省的init腳本自動建立。
chkconfig --del name:刪除服務,並把相關符號連接從/etc/rc[0-6].d刪除。
chkconfig [--level levels] name:設置某一服務在指定的運行級是被啟動,停止還是重置。
- 使用范例:
chkconfig --list #列出所有的系統服務
chkconfig --add httpd #增加httpd服務
chkconfig --del httpd #刪除httpd服務
chkconfig --level httpd 2345 on #設置httpd在運行級別為2、3、4、5的情況下都是on(開啟)的狀態
chkconfig --list #列出系統所有的服務啟動情況
chkconfig --list mysqld #列出mysqld服務設置情況
chkconfig --level 35 mysqld on #設定mysqld在等級3和5為開機運行服務,--level 35表示操作只在等級3和5執行,on表示啟動,off表示關閉
chkconfig mysqld on #設定mysqld在各等級為on,“各等級”包括2、3、4、5等級
- chkconfig命令的原理:
[root@BASE ~]# ll /etc/init.d lrwxrwxrwx. 1 root root 11 Jun 13 21:10 /etc/init.d -> rc.d/init.d [root@BASE ~]# 當我們將服務的啟動腳本放到/etc/init.d這個目錄的時候,其實是放在了rc.d/init.d中 [root@BASE ~]# ll /etc/rc.d/ total 60 drwxr-xr-x. 2 root root 4096 Sep 23 21:51 init.d -rwxr-xr-x. 1 root root 2617 Nov 23 2013 rc -rwxr-xr-x. 1 root root 220 Sep 8 09:18 rc.local -rwxr-xr-x. 1 root root 19688 Nov 23 2013 rc.sysinit drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc0.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc1.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc2.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc3.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc4.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc5.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc6.d [root@BASE ~]# rc1-6.d這些目錄對應的是不同的運行級別,系統在開機的時候會加載這些目錄中的文件,來實現在不同的級別是否啟動服務。 [root@BASE ~]# ll /etc/rc.d/rc2.d/ total 0 lrwxrwxrwx. 1 root root 16 Jun 13 21:13 K01smartd -> ../init.d/smartd lrwxrwxrwx 1 root root 13 Jun 18 11:57 K05atd -> ../init.d/atd lrwxrwxrwx. 1 root root 16 Jun 13 21:13 K10psacct -> ../init.d/psacct lrwxrwxrwx. 1 root root 19 Jun 13 21:12 K10saslauthd -> ../init.d/saslauthd lrwxrwxrwx. 1 root root 18 Jun 13 21:13 K15svnserve -> ../init.d/svnserve lrwxrwxrwx 1 root root 19 Jun 18 11:57 K16abrt-ccpp -> ../init.d/abrt-ccpp ........ lrwxrwxrwx 1 root root 17 Aug 21 14:34 S13rpcbind -> ../init.d/rpcbind lrwxrwxrwx. 1 root root 14 Jun 13 21:13 S55sshd -> ../init.d/sshd lrwxrwxrwx 1 root root 16 Sep 27 10:56 S64mysqld -> ../init.d/mysqld lrwxrwxrwx. 1 root root 15 Jun 13 21:12 S90crond -> ../init.d/crond lrwxrwxrwx. 1 root root 11 Jun 13 21:12 S99local -> ../rc.local
當將某一個服務設置為開機啟動的時候,系統會自動創建一個軟連接來指向rc.d/init.d中該服務的啟動腳本,所以如果想使用chkconfig來管理服務的開機啟動的時候必須先要將服務的啟動腳本放到rc.d/init.d中去。
如果將某一個服務設置為2級別on,系統就會在/etc/rc.d/rc2.d/中創建一個以S開頭的軟連接,如果設置為off,就會創建一個以K開頭連接文件。
- 原理演示:
Mysqld服務在2級別是開啟的
[root@BASE ~]# chkconfig|grep mysql mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
在rc2.d目錄中將mysqld的軟連接刪除。
[root@BASE ~]# rm /etc/rc.d/rc2.d/S64mysqld
可以看到mysqld服務在2級別的變為為off
[root@BASE ~]# chkconfig|grep mysql mysqld 0:off 1:off 2:off 3:on 4:on 5:on 6:off [root@BASE ~]#
如何設置腳本使其能夠通過chkconfig管理
需要在腳本中(往往在腳本的開頭)加上如下的內容
#chkconfig: 2345 21 60
2345 表示默認的都在那個級別開機啟動
21 表示啟動順序
60 表示關閉的順序
提示:在設置順序的時候注意不要和之前的軟件沖突,同時要注意依賴軟件的之間的先后順序,例如nfs和rpcbind。