一、准備知識
在說明chkconfig命令的用途之前,有必要先了解一下Linux系統中/etc/rc[0-6].d目錄的用途。
眾所周知,在Linux系統定義了7種不同的啟動級別,這7種啟動級別的含義分別如下:
0:關機 1:單用戶模式 2:無網絡連接的多用戶命令行模式 3:有網絡連接的多用戶命令行模式 4:不可用 5:帶圖形界面的多用戶模式 6:重啟所以,/etc/rc[0-6].d目錄中的0-6就代表了上述7種啟動級別。接下來我們再看一下/etc/rc[0-6].d目錄中到底存放了些什麼東西,以/etc/rc5.d為例:
...省略... lrwxrwxrwx. 1 root root 15 May 17 21:57 K89rdisc -> ../init.d/rdisc lrwxrwxrwx. 1 root root 18 May 17 22:12 K92iptables -> ../init.d/iptables lrwxrwxrwx. 1 root root 14 May 17 21:58 K99rngd -> ../init.d/rngd lrwxrwxrwx. 1 root root 17 May 17 21:58 S01sysstat -> ../init.d/sysstat lrwxrwxrwx. 1 root root 22 May 17 21:58 S02lvm2-monitor -> ../init.d/lvm2-monitor lrwxrwxrwx. 1 root root 19 May 17 21:57 S08ip6tables -> ../init.d/ip6tables ...省略...從上面的輸出中可以看到,/etc/rc5.d中存放的都是一些鏈接文件,這些鏈接文件都存放在一個名為/etc/init.d的目錄中。好了,准備知識就到此為止!
二、命令用法
chkconfig的用途為,查看系統服務的啟動信息或更新系統服務的運行級別。我們再來了解一下man page中是如何介紹chkconfig的用途的:“chkconfig提供了一個簡單的,用於維護/etc/rc[0-6].d的目錄層級的命令行工具,通過使用該工具,極大地減輕了系統管理員在操作這些目錄中的符號鏈接方面的任務。”
語法: chkconfig [--list] [--type type][name] chkconfig --add name chkconfig --del name chkconfig --override name chkconfig [--level levels] [--type type] name <on|off|reset|resetpriorities> chkconfig [--level levels] [--type type] name 選項: --level:指定某個服務的運行級別。例如:--level 35指定的運行級別為3和5; --list:列出被chkconfig所管理的所有服務及其在個運行級別下的啟動狀態; --add:增加一個服務,在/etc/rc[0-6].d目錄下增加相關符號鏈接; --del:刪除一個服務,從/etc/rc[0-6].d目錄下刪除相關符號連接; --override:使用/etc/chkconfig.d目錄下的init script的功能覆蓋/etc/init.d目錄下的同名init script;如果在服務名後接on、off、reset、resetpriorities其中之一,chkconfig命令將會改變指定服務的啟動信息,其中:on/off用於指示啟動/停止服務,reset用於根據啟動腳本(/etc/init.d目錄下與服務名同名文件)中定義重置服務的啟動/停止狀態,resetpriorities用於根據啟動腳本中的定義重置服務的啟動/停止優先級。以iptables的init script為例:
[root@primary-mysql init.d]# vi iptables #!/bin/sh # # iptables Start iptables firewall # # chkconfig: 2345 08 92 # description: Starts, stops and saves iptables firewall # ...省略... # 其中,2345是iptables的默認啟動級別,08是默認的啟動優先級,92是默認的停止優先級。在默認情況下,on和off只影響2,3,4,5四種運行級別,reset和resetpriorities影響所有的運行級別。--level選項被用於指定到底將會影響哪(幾)種運行級別。
如果chkconfig使用--list參數或不帶參數,命令將顯示系統中所有的服務及它們的運行級別。如果chkconfig --list service_name,命令將顯示某個指定的服務的運行級別。
三、示例:配置一個服務並使其開機自啟動
# 確保在/etc/init.d目錄下存在服務的init script。 # 將服務加入chkconfig管理 chkconfig --add service_name # 配置服務的運行級別及狀態 chkconfig --level 35 service_name on # 確認配置結果 chkconfig --list service_name 或 chkconfig --list 或 chkconfig