Linux 命令(106)—— chkconfig 命令

1.命令簡介

chkconfig 命令用於更新和查詢系統服務的運行等級信息。它可查詢操作系統在每一個運行等級中會自動執行哪些系統服務,包括各類常駐服務,比如 httpd、sshd、mysqld 等。

chkconfig 實際上是通過改變七個不同運行等級目錄 /etc/rc[0-6].d 中服務腳本的符號鏈接,來設置操作系統在每一個運行等級中會執行哪些系統服務。chkconfig 不是用於立即啓動或停止某一個服務,這一點與 service 不同。

chkconfig 有五個功能:
(1)添加新的服務供 chkconfig 管理;
(2)從 chkconfig 管理服務列表中刪除服務;
(3)列出 chkconfig 管理的所有服務的當前啓動信息;
(4)更改服務的啓動信息;
(5)檢查特定服務的啓動狀態。

2.命令格式

chkconfig
service [OPTIONS] SERVICENAME

沒有任何選項的 chkconfig 或跟選項 --list 將顯示所有服務及其當前配置的列表。

當 chkconfig 後只跟服務名時,會檢查服務是否配置爲在當前運行級別自啓動,如果是,則 chkconfig 返回 true,否則返回 false。–level 選項可用於讓 chkconfig 查詢其它運行級別而不是當前運行級別下的配置。

如果在服務名稱之後指定了 on、off、reset 或 resetpriorities 之一,chkconfig 將更改指定服務的啓動信息。on 和 off 標誌分別導致服務在正在更改的運行級別中設置爲啓動或停止。reset 標誌將服務的所有運行級別的開關狀態重置爲相關 init 腳本中指定的值,而 resetpriorities 標誌將服務的啓動/停止優先級重置爲 init 腳本中指定的值。默認情況下,on 和 off 選項僅影響運行級別 2、3、4 和 5,而 reset 和 resetpriorities 影響所有運行級別。--level 選項可用於指定受影響的運行級別。

3.選項說明

--level LEVELS
	指定操作應屬於的運行級別。0 到 6 組成的數字串。例如,-level 35 指定運行級別 3 和 5
--no-redirect
	如果系統使用 systemd 作爲系統的啓動進程,chkconfig 將命令轉發給 systemd。此選項將關閉到 systemd 的重定向,並且僅在 /etc/rc[0-6].d 中的符號鏈接上操作。此選項僅在 on、off 或沒有向服務傳遞命令(檢查啓用)時有效
--add SERVICENAME
	添加一個新服務供 chkconfig 管理
--del SERVICENAME
	將從 chkconfig 管理中刪除該服務,並刪除 /etc/rc[0-6].d 中與其相關的任何符號鏈接
--override SERVICENAME
	更改服務配置
--list [SERVICENAME]
	列出 chkconfig 所知的所有服務在不同運行等級下的啓動狀態。如果指定 SERVICENAME,則只列出具體的服務的啓動狀態

4.常用示例

(1)列出所有的系統服務。

chkconfig
Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

bootlocal      	0:off	1:off	2:off	3:on	4:off	5:off	6:off
irqaffinity    	0:off	1:off	2:on	3:on	4:on	5:on	6:off
netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
qemu-ga        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
rename_netifs  	0:off	1:off	2:off	3:on	4:off	5:off	6:off

(2)將 Apache Web 服務器配置爲在每次系統啓動時啓動。

chkconfig httpd on

當您成功地使用 chkconfig 啓用服務時,該命令不提供任何確認消息。

(3)設置 network 在運行級別爲 2、3、4、5 的情況下都是關閉狀態,即不啓動。

chkconfig network off

# 或
chkconfig --level 2345 network off

(4)查看 network 服務的自啓動狀態。

chkconfig --list network
Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

network        	0:off	1:off	2:off	3:off	4:off	5:off	6:off

5.拓展知識

5.1 註冊服務到 chkconfig

每個被 chkconfig 管理的服務需要在對應的 /etc/rc.d/init.d 下的管理腳本加上兩行或者更多行的註釋。第一行告訴 chkconfig 缺省啓動的運行級以及啓動和停止的優先級。如果某服務不在任何運行級啓動,那麼使用 - 代替運行級。第二行對服務進行描述,可以用 \ 跨行註釋。例如 /etc/rc.d/init.d/network 中的註釋:

# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to \
#              start at boot time.

其中第一行表示運行等級在 2、3、4 和 5,啓動優先級爲 10,停止優先級爲 90。第二行和第三行爲服務 network 的描述。

5.2 Linux 系統的 7 個運行級別

運行級別是操作系統當前正在運行的功能級別,它讓一些程序在一個級別啓動,而在另外一個級別的時候不啓動。Linux 系統一般使用 7 個級別。

0 停機狀態。系統默認運行級別不能設爲 0,否則不能正常啓動
1 單用戶模式,root權限,用於系統維護,禁止遠程登陸
2 無網絡的多用戶模式
3 有網絡的多用戶模式
4 系統未使用,保留
5 圖形化界面
6 系統正常關閉並重啓,默認運行級別不能設爲 6,否則不能正常啓動

默認的運行級別可以在文件 /etc/inittab 查看。一般自用的 Linux 默認登錄等級爲 5,即開機進入圖形用戶界面,遠程登錄的運行等級爲 3,即進入命令行交互界面。

運行級別的原理:
(1)在目錄 /etc/rc.d/init.d 下有許多服務管理腳本,每個服務被稱爲 service;
(2)在 /etc/rc.d 下有 7 個名爲 rcN.d 的目錄,對應系統的 7 個運行級別;
(3)rcN.d 目錄下都是一些符號鏈接文件,這些鏈接文件都指向 init.d 目錄下的 service 腳本文件,命名規則爲K+nn+服務名S+nn+服務名,其中 nn 爲兩位數字。
(4)系統會根據指定的運行級別進入對應的 rcN.d 目錄,並按照文件名順序檢索目錄下的鏈接文件:

對於以 K 開頭的文件,系統將終止對應的服務
對於以 S 開頭的文件,系統將啓動對應的服務

(5)查看運行級別用:runlevel;
(6)進入其它運行級別用:(sudo) init N;
(7)另外 init 0 爲關機,init 6 爲重啓系統。

另外,當使用 runlevel 查看運行級別時,結果會顯示前一次的運行級別和現在的運行級別,如果前次的運行級別爲 N,那麼說明前次沒有運行級別(可能剛剛 power on)。


參考文獻

[1] chkconfig(8) manual
[2] 簡書.chkconfig 命令
[3] service和chkconfig命令的使用與區別
[4] 簡書.Linux系統的7個運行級別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章