chkconfig命令詳解


  • 使用語法:

  chkconfig [--add][--del][--list][系統服務或 chkconfig [--level <等級代號>][系統服務][on/off/reset]

 

  chkconfig在沒有參數運行時,顯示用法。如果加上服務名,那么就檢查這個服務是否在當前運行級啟動。如果是,返回true,否則返回false。如果在服務名后面指定了onoff或者reset,那么chkconfi 會改變指 定服務的啟動信息。onoff分別指服務被啟動和停止,reset指重置服務的啟動信息,無論有問題的初始化腳本指定了什么。onoff開關,系統默認只對運行級345有效,但是reset可以對所有運行級有效。

 

  • 使用參數:

    chkconfig --list [name]:顯示所有運行級系統服務的運行狀態信息(onoff)。如果指定了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在運行級別為2345的情況下都是on(開啟)的狀態
  chkconfig --list        #列出系統所有的服務啟動情況
  chkconfig --list mysqld        #列出mysqld服務設置情況
  chkconfig --level 35 mysqld on        #設定mysqld在等級35為開機運行服務,--level 35表示操作只在等級35執行,on表示啟動,off表示關閉
  chkconfig mysqld on        #設定mysqld在各等級為on各等級包括2345等級

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM