Linux下chkconfig命令詳解

chkconfig命令用來更新和查詢不一樣運行級上的系統服務

簡單地說,好比你安裝了mysql,而且你把啓動的腳本放在了/etc/rc.d/init.d目錄下,有時候你須要開機自動啓動它,而有時候則不須要,所以,就可使用chkconfig命令來進行控制,這個命令就至關於一個開關,不過這個開關有6個檔,表示在不一樣級別下的運行狀態是on仍是off。

chkconfig命令主要用來更新(啓動或中止)和查詢系統服務的運行級信息。謹記chkconfig不是當即自動禁止或激活一個服務,它只是簡單的改變了符號鏈接。

使用語法:

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能夠對全部運行級有效。

參數用法:

--add  增長所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啓動的敘述文件內增長相關數據。
--del  刪除所指定的系統服務,再也不由chkconfig指令管理,並同時在系統啓動的敘述文件內刪除相關數據。
--level<等級代號>  指定讀系統服務要在哪個執行等級中開啓或關畢。
等級0表示:表示關機
等級1表示:單用戶模式
等級2表示:無網絡鏈接的多用戶命令行模式
等級3表示:有網絡鏈接的多用戶命令行模式
等級4表示:不可用
等級5表示:帶圖形界面的多用戶模式
等級6表示:從新啓動
須要說明的是,level選項能夠指定要查看的運行級而不必定是當前運行級。對於每一個運行級,只能有一個啓動腳本或者中止腳本。當切換運行級時,init不會從新啓動已經啓動的服務,也不會再次去中止已經中止的服務。

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 管理的服務須要在對應的/etc/rc.d/init.d 下的腳本加上兩行或者更多行的註釋。
第一行告訴 chkconfig 缺省啓動的運行級以及啓動和中止的優先級。若是某服務缺省不在任何運行級啓動,那麼使用 - 代替運行級。
第二行對服務進行描述,能夠用\ 跨行註釋。

例如,random.init 包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
代表 random 腳本應該在運行級 2, 3, 4, 5 啓動,啓動優先權爲20,中止優先權爲 80。

使用範例:

chkconfig --list                #列出全部的系統服務
chkconfig --add httpd           #增長httpd服務
chkconfig --del httpd           #刪除httpd服務
chkconfig --level httpd 2345 on #設置httpd在運行級別爲二、三、四、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,「各等級」包括二、三、四、5等級

如何增長一個服務:

1. 服務腳本必須存放在/etc/ini.d/目錄下;
2. chkconfig --add servicename
在chkconfig工具服務列表中增長此服務,此時服務會被在/etc/rc.d/rcN.d中賦予K/S入口了;
3. chkconfig --level 35 mysqld on
修改服務的默認啓動等級。


關閉Linux系統下沒必要要的服務

chkconfig --list 顯示。
chkconfig [service] off 關閉其中一個服務。

守候進程名字功能對照表:

amd:自動安裝NFS(網絡文件系統)守侯進程。
apmd:高級電源管理。
Arpwatch:記錄日誌並構建一個在LAN接口上看到的以太網地址和IP地址對數據庫。
Autofs:自動安裝管理進程automount,與NFS相關,依賴於NIS。
Bootparamd:引導參數服務器,爲LAN上的無盤工做站提供引導所需的相關信息。
crond:Linux下的計劃任務。
Dhcpd:啓動一個DHCP(動態IP地址分配)服務器。
Gated:網關路由守候進程,使用動態的OSPF路由選擇協議。
Httpd:WEB服務器。
Inetd:支持多種網絡服務的核心守候程序。
Innd:Usenet新聞服務器。
Linuxconf:容許使用本地WEB服務器做爲用戶接口來配置機器。
Lpd:打印服務器。
Mars-nwe:mars-nwe文件和用於Novell的打印服務器。
Mcserv:Midnight命令文件服務器。
named:DNS服務器。
netfs:安裝NFS、Samba和NetWare網絡文件系統。
network:激活已配置網絡接口的腳本程序。
nfs:打開NFS服務。
nscd:nscd(Name
Switch Cache daemon)服務器,用於NIS一個支持服務,它高速緩存用戶口令和組成成員關係。
portmap:RPC
portmap管理器,與inetd相似,它管理基於RPC服務的鏈接。
postgresql:一種SQL數據庫服務器。
routed:路由守候進程,使用動態RIP路由選擇協議。
rstatd:一個爲LAN上的其它機器收集和提供系統信息的守候程序。
ruserd:遠程用戶定位服務,這是一個基於RPC的服務,它提供關於當前記錄到LAN上一個機器日誌中的用戶信息。
rwalld:激活rpc.rwall服務進程,這是一項基於RPC的服務,容許用戶給每一個註冊到LAN機器的其餘終端寫消息。
rwhod:激活rwhod服務進程,它支持LAN的rwho和ruptime服務。
sendmail:郵件服務器sendmail。
smb:Samba文件共享/打印服務。
snmpd:本地簡單網絡管理候進程。
squid:激活代理服務器squid。
syslog:一個讓系統引導時起動syslog和klogd系統日誌守候進程的腳本。
xfs:X
Window字型服務器,爲本地和遠程X服務器提供字型集。
xntpd:網絡時間服務器。
ypbind:爲NIS(網絡信息系統)客戶機激活ypbind服務進程。
yppasswdd:NIS口令服務器。
ypserv:NIS主服務器。
gpm:管鼠標的。

identd:AUTH服務,在提供用戶信息方面與finger相似。 html


6個Linux chkconfig命令實例 - 增長,刪除,查看和修改services的自動啓動選項 mysql


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

# ./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文件;
當chkconfig --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
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
# 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

當你取消此service在某個runlevel的自動啓動選項的設置的時候,對應的rc*.d目錄下的symbollink文件也將被自動的刪除,

# chkconfig --level 5 nfsserver off
# ls /etc/rc.d/rc5.d | grep nfsserver sql

相關文章
相關標籤/搜索