Linux下chkconfig命令詳解
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管理的服務需要在對應的init.d下的指令碼加上兩行或者更多行的註釋。第一行告訴chkconfig預設啟動的執行級以及啟動和停止的優先順序。如果某服務預設不在任何執行級啟動,那麼使用 - 代替執行級。第二行對服務進行描述,可以用\ 跨行註釋。
例如,random.init包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
使用範例:
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等級
如何增加一個服務:
1.服務指令碼必須存放在/etc/ini.d/目錄下;
2.chkconfig --add servicename
在chkconfig工具服務列表中增加此服務,此時服務會被在/etc/rc.d/rcN.d中賦予K/S入口了;
3.chkconfig --level 35 mysqld on
修改服務的預設啟動等級。
1. chkconfig是redhat中的服務配置工具
2. 要使不在chkconfig目錄中的服務支援該命令,需要改該服務指令碼的工具
例如:/etc/init.d/sshd
1.註釋中必須有這兩行 (chkconfig會檢視所有註釋行)
# chkconfig: 2345 55 25 # description: SSH is a protocol for secure remote shell access. 描述檔案
1.chkconfig引數1:表示在執行級別2345中預設代開 使用-表示預設關閉
2.chkconfig引數2:S55
3.chkconfig引數3:K45
2. 要在服務指令碼中實現POSIX規範中的函式:start() stop()等
3.這時可以使用 service xxxx(指令碼名) start/stop等命令立刻啟動或關閉
3.要使該指令碼每次啟動都生效
1.chkconfig --add xxxx註冊服務名
1.chkconfig會根據該指令碼的資訊,自動到相應執行級rcX.d中建立連結
2.chkconfig xxxx off 配置系統啟動時該指令碼預設關閉
3.chkconfig xxxx on 配置系統啟動時該指令碼預設啟動
4.chkconfig中的特殊服務xinetd ,xinetd服務下掛載一系列服務 ,指令碼放在/etc/xinetd.d/
1.要啟動xinetd掛在的服務
1.chkconfig xinetd on
2.chkconfig xxx on
3.service xxx start
chkconfig命令
1.chkconfig是一個改變開機啟動項的命令,修改/etc/rc[0-6].d資料夾下的內容
2.chkconfig命令有5種不同的作用:增加新的服務、刪除服務、列印當前開啟啟動服務的資訊、修改開啟啟動服務的資訊、檢查一個指定服務的狀態
3.當chkconfig servicename時,它檢查這個服務是不是在當前的runlevel下被開啟啟動,如果是,返回true,否則false。chkconfig --level= servicename檢查服務是不是在指定的runlevel開機啟動
4.當chkconfig --list時,或者完全沒有引數即chkconfig時,會列出當前的服務和他們的配置
5.如果on、off、reset、resetpriorities引數之一被指定時(在服務名引數後面),chkconfig命名改變這個服務的開機配置。on/off使服務開機啟動/停止。reset標誌重置on/off不論在開機啟動指令碼中是什麼樣子的,resetpriorities也是,只是有優先順序
6.預設,on/off命令支隊runlevel為2,3,4,5的有影響,而reset和resetpriorities對所有runlevels都有影響。--level引數可以指定被影響的runlevel
7.對每個服務,每個runlevel都有1個start/stop指令碼。當change runlevel時,init程式不會重啟一個already-start的服務,也不會重新關閉一個already-stop的服務
chkconfig 檢查和設定系統的各種服務。
語法:chkconfig [--add][--del][--list][系統服務] :增、刪、查系統服務(/etc/【rc.d】/init.d/……)
chkconfig [--level <等級代號>] [系統服務][on/off/reset] :開啟關閉重置系統服務
--level<等級代號> 指定讀系統服務要在哪一個執行等級中開啟或關閉。
level
abrt-ccpp 0:關閉 1:關閉 2:關閉 3:啟用 4:關閉 5:啟用 6:關閉
abrt-oops 0:關閉 1:關閉 2:關閉 3:啟用 4:關閉 5:啟用 6:關閉
abrtd 0:關閉 1:關閉 2:關閉 3:啟用 4:關閉 5:啟用 6:關閉
等級0表示:表示關機
等級1表示:單使用者模式
等級2表示:無網路連線的多使用者命令列模式
等級3表示:有網路連線的多使用者命令列模式
等級4表示:不可用
等級5表示:帶圖形介面的多使用者模式
等級6表示:重新啟動
chkconfig 沒有引數執行時,顯示用法。如果加上服務名,那麼就檢查這個服務是否在當前執行級啟動。
如果是,返回true,否則返回false。
如果在服務名後面指定了on,off或者reset,那麼chkconfi 會改變指定服務的啟動資訊。
on和off分別指服務被啟動和停止,reset指重置服務的啟動資訊,無論有問題的初始化指令碼指定了什麼。
on和off開關,系統預設只對執行級3,4,5有效,但是reset可以對所有執行級有效
chkconfig svnserved on
svnserved 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
chkconfig svnserved on
svnserved 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
本文假設你的apahce安裝目錄為/usr/local/apache2,這些方法適合任何情況 apahce啟動命令: /usr/local/apache2/bin/apachectl start apaceh啟動 apache停止命令 /usr/local/apache2/bin/apachectl stop 停止 apache重新啟動命令: /usr/local/apache2/bin/apachectl restart 重啟 要在重啟 Apache 伺服器時不中斷當前的連線,則應執行:
/usr/local/sbin/apachectl graceful 如果apache安裝成為linux的服務的話,可以用以下命令操作: service httpd start 啟動
service httpd restart 重新啟動
service httpd stop 停止服務
chkconfig命令
chkconfig
功能說明:檢查,設定系統的各種服務。
語 法:chkconfig
[--add][--del][--list][系統服務]或chkconfig[--level<等級代號>][系統服務][on/off/reset]
補充說明:這是RedHat公司遵循GPL規則所開發的程式,它可查詢作業系統在每一個執行等級中會執行哪些系統服務,其中包括各類常駐服務。
參 數:
--add 增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啟動的敘述檔案內增加相關資料。
--del 刪除所指定的系統服務,不再由chkconfig指令管理,並同時在系統啟動的敘述檔案內刪除相關資料。
--level<等級代號> 指定讀系統服務要在哪一個執行等級中開啟或關畢
1:chkconfig 命令也可以用來啟用和解除服務。chkconfig --list 命令顯示系統服務列表,以及這些服務在執行級別0到6中已被啟動(on)還是停止(off)。
chkconfig --list
chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2:chkconfig 還能用來設定某一服務在某一指定的執行級別內被啟動還是被停運。譬如,要在執行級別3、4、5中停運 nscd 服務,使用下面的命令:
chkconfig --level 345 nscd off
3:由 xinetd 管理的服務會立即被 chkconfig 影響。譬如,如果 xinetd 在執行,finger 被禁用,那麼執行了 chkconfig finger on 命令後,finger 就不必手工地重新啟動 xinetd 來立即被啟用。對其它服務的改變在使用 chkconfig 之後不會立即生效。必須使用service servicename start/stop/restart命令來重起服務
]Linux中如何自動啟動服務
linux自動啟動服務很簡單,最簡單的是把啟動命令放到/etc/rc.d/rc.local檔案裡。這樣就可以每次啟動的時候自動啟動服務了。例如對於 apache,編譯好apache後會在安裝目錄的bin下生成apachectl檔案,這是個啟動指令碼,我們只需要把這個命令加到rc.local裡就可以了:
echo /usr/local/apache/bin/apachectl >> /etc/rc.d/rc.local
此外我們還可以使用chkconfig命令來把某項服務加到系統的各項執行級別中,步驟如下:
1 建立啟動指令碼,對於apache、mysql、ssh這樣的軟體都是自己帶的,我們只要稍微修改一下使之支援chkconfig就可以了
2 修改指令碼
我們需要在指令碼的前面加上2行,才能支援chkconfig命令
# chkconfig: 2345 08 92
# description: Automates a packet filtering firewall with ipchains.
chkconfig:後面定義的使啟動服務的執行級別(例子中使2345啟動該服務),以及關閉和啟動服務的順序(上例中啟動服務的順序是8,關閉的順序是92)。
descriptions:對該服務的描述(上例中是ipchains包過濾),你可以換成自己想要的
修改好之後執行
cp 你的指令碼 /etc/rc.d/init.d/指令碼名
chmod 700 /etc/rc.d/init.d/指令碼名
chkconfig --add 指令碼名
以後每次重新啟動伺服器都會自動啟動和關閉我們的服務了
而且你執行setup之後也可以看到我們新增的服務,選中我們新增的服務按F1鍵還可以看到我們定製的資訊。
附chkconfig命令:
chkconfig命令主要用來更新(啟動或停止)和查詢系統服務的執行級資訊。謹記chkconfig不是立即自動禁止或啟用一個服務,它只是簡單的改變了符號連線。
語法:
chkconfig --list [name]
chkconfig --add name
chkconfig --del name
chkconfig [--level levels] name <on|off|reset>
chkconfig [--level levels] name
chkconfig 沒有引數執行時,顯示用法。如果加上服務名,那麼就檢查這個服務是否在當前執行級啟動。如果是,返回true,否則返回false。如果在服務名後面指定 了on,off或者reset,那麼chkconfi 會改變指定服務的啟動資訊。on和off分別指服務被啟動和停止,reset指重置服務的啟動資訊,無論有問題的初始化指令碼指定了什麼。on和off開 關,系統預設只對執行級3,4,5有效,但是reset可以對所有執行級有效。
--level選項可以指定要檢視的執行級而不一定是當前執行級。
需要說明的是,對於每個執行級,只能有一個啟動指令碼或者停止指令碼。當切換執行級時,init不會重新啟動已經啟動的服務,也不會再次去停止已經停止的服務。
chkconfig --list :顯示所有執行級系統服務的執行狀態資訊(on或off)。如果指定了name,那麼只顯示指定的服務在不同執行級的狀態。
chkconfig --add name:增加一項新的服務。chkconfig確保每個執行級有一項啟動(S)或者殺死(K)入口。如有缺少,則會從預設的init指令碼自動建立。
chkconfig --del name:刪除服務,並把相關符號連線從/etc/rc[0-6].d刪除。
chkconfig [--level levels] name <on|off|reset>:設定某一服務在指定的執行級是被啟動,停止還是重置。例如,要在3,4,5執行級停止nfs服務,則命令如下:
chkconfig --level 345 nfs off
執行級檔案:
每個被chkconfig管理的服務需要在對應的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。
附加介紹一下Linux系統的執行級的概念:
Linux中有多種執行級,常見的就是多使用者的2,3,4,5 ,很多人知道5是執行X-Windows的級別,而0就是關機了。執行級的改變可以通過init命令來切換。例如,假設你要維護系統進入單使用者狀態,那麼,可以使用init1來切換。在Linux的執行級的切換過程中,系統會自動尋找對應執行級的目錄/etc/rc[0-6].d下的K和S開頭的檔案, 按後面的數字順序,執行這些指令碼。對這些指令碼的維護,是很繁瑣的一件事情,Linux提供了chkconfig命令用來更新和查詢不同執行級上的系統服務
一般的Linux系統,服務一般配置在/etc/init.d或者/etc/rc.d/init.d資料夾下,國產RedFlag Linux乾脆兩個目錄下都有對應的服務,只是/etc/init.d下面的配置成系統預設的。
PS:RedFlag Linux還相容Dos命令,看來是不遺餘力的縱容了使用者的習慣。
下面是我在RedFlag Linux的兩個服務目錄下看到的(保留部分有代表性的):
$ ls /etc/init.d | $ ls /etc/rc.d/init.d | 說明 |
dhcpd | dhcpd | DHCP服務 |
httpd | httpd | WEB服務 |
ldap | ldap | 輕量級目錄服務 |
mysqld | mysqld | Mysql資料庫服務 |
proftpd | proftpd | FTP服務 |
sendmail | sendmail | 郵件服務 |
smb | smb | 網路檔案服務 |
sshd | sshd | SSH服務 |
每個服務的啟動:/etc/init.d/{服務名} start或者/etc/rc.d/init.d/{服務名} start 每個服務的停止:/etc/init.d/{服務名} stop或者/etc/rc.d/init.d/{服務名} stop 每個服務的重啟:/etc/init.d/{服務名} restart或者/etc/rc.d/init.d/{服務名} restart
比如對samba服務進行操作(對應服務名smb):
linux開機啟動服務的修改與檢視
首先了解linux的執行級別有哪些?
6個執行級別
# 0 - 停機(千萬不要把initdefault設定為0 )
# 1 - 單使用者模式
# 2 - 多使用者,但是沒有NFS
# 3 - 完全多使用者模式
# 4 - 沒有用到
# 5 - X11
# 6 - 重新啟動(千萬不要把initdefault設定為6 )
# 對各個執行級的詳細解釋:
0 為停機,機器關閉。
1 為單使用者模式,就像Win9x下的安全模式類似。
2 為多使用者模式,但是沒有NFS支援。
3 為完整的多使用者模式,是標準的執行級。
4 一般不用,在一些特殊情況下可以用它來做一些事情。例如在膝上型電腦的電池用盡時,可以切換到這個模式來做一些設定。
5 就是X11,進到X Window系統了。
6 為重啟,執行init 6機器就會重啟。
修改級別
vi /etc/inittab
把id:3:initdefault:中的3改為相應的級別
每次系統開機的時候,都會根據不同的runlevel級別啟動不同的服務。
開機按[CTRL]+[ALT]+[F7]/[F8]可檢視系統啟動時正在啟動的服務!!!!
眾所周知Linux給我們提供了7中不同的啟動級別0~6,那麼不同的啟動級別都會啟動那些服務哪。可以使用chkconfig ——list 檢視,可以使用chkconfig 服務名 ——level 3 {on|of}修改是否要再某個級別啟動或停止。
1. 例如:要把sshd服務在第3種啟動級別中停止。
[root@team4 rc3.d]# chkconfig sshd --level 3 off 中國網管聯盟www.bitscn.com
2. 還可以手工修改,在/etc/rc.d/這個目錄裡有很多不同runlevel對應的目錄,裡面表明進入某個啟動級別時要啟動和停止那些服務。
例如: 中國網管聯盟www、bitsCN、com
[root@team4 etc]# ls /etc/rc.d
init.d rc0.d rc2.d rc4.d rc6.d rc.sysinit
rc rc1.d rc3.d rc5.d rc.local
我們用rc3.d這個目錄為例,這個目錄裡面記錄的是進入init 3時需要停止和啟動那些服務。
下面為rc3.d目錄的內容:
[root@team4 etc]# ls /etc/rc.d/rc3.d/
K02avahi-dnsconfd K89pand S25bluetooth
K02dhcdbd K89rdisc S25netfs
K02NetworkManager K91capi S25pcscd
K02NetworkManagerDispatcher K99readahead_later S26apmd
K05conman S04readahead_early S26hidd
K開頭代表這個啟動級別需要停止的服務,編號是停止的時候執行的順序,再後面就是服務明瞭。
S開頭則是要啟動那些服務。 網管網bitsCN_com
注意:先執行K開頭的,後執行S開頭的。所以S開頭的服務會覆蓋K開頭的服務。
Linux設定程式的開機自啟動與Linux服務
這裡只說我所知道的,舉例如下
需求是我要用Windows下的VNC Viewer連線到Linux Server. 我在Linux下面輸入
#vncserver
設定好密碼,好現在我就可以在Windows下面使用VNC連線到Linux桌面了,這個時候如果我的Linux Server系統重啟了,那麼我還得再敲一次vncserver這個命令,所以我現在要讓Linux Server在開機時自動啟動vncserver
有哪些方法呢?
1. 我可以把vncserver設定成系統的服務,並啟動起來,使用如下命令檢視vncserver是否已經是系統的服務
#chkconfig --list|grep vnc
vncserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off
現在我們要設定vncserver開機自啟動,使用如下命令
#chkconfig --level 5 vncserver on#chkconfig --list|grep vnc
vncserver 0:off 1:off 2:off 3:off 4:off 5:on 6:off
這個時候重啟系統,那麼vncserver就會以服務的方式自動起來,但是現在如果想立即使用vnc則直接敲命令 vncserver即可
2. 我們可以把vncserver這條命令寫在Linux開機要執行的指令碼里面,那些指令碼是Linux開機時要執行的呢?
我知道的有以下這些:
/etc/rc.local
/etc/rc.sysinit
/etc/inittab
/etc/profile
這裡記住Linux服務於Linux開機自啟動之間的區別和聯絡。
RedHat Linux下注冊Apache為系統服務並設為開機啟動
1、系統環境:
作業系統:Red Hat Enterprise Linux Server release 5.4
Apache版本:httpd-2.2.19
2、註冊服務
#將apachectl複製到init.d目錄下
[root@bogon ~]# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
#修改httpd
[root@bogon ~]# vi /etc/init.d/httpd
#找到#!/bin/sh,另起一行增加以下內容,並儲存(:wq!)退出。
#chkconfig:345 85 15
#description:Start and stop the Apache HTTP Server
【說明】:在註冊過程中增加#chkconfig:35 70 30,再通過chkconfig --add httpd註冊服務時,報如下錯誤service httpd does not support chkconfig,修改為chkconfig: 2345 10 90即可正常註冊。
#註冊服務
[root@bogon init.d]# chkconfig --add httpd
[root@bogon init.d]# chkconfig httpd on
3、通過服務方式啟動、停止Apache
#啟動、重啟、停止服務
啟動服務:service httpd start
停止服務:service httpd stop
重新啟動:service httpd restart
4、設為開機啟動
在/etc/rc.d/rc.local中增加啟動apache的命令,例如:/usr/local/apache2/bin/apachectl start
原始碼安裝apache及配置轉發
一、 安裝Apache
a) 解壓:tar -xvf httpd-*;
b) ./configure --prefix=/usr/oracle/apache CC="gcc -m32" \--enable-proxy=shared --enable-proxy-http=shared --enable-proxy-ftp=shared --enable-proxy-connect=shared --enable-so --enable-modules=all --enable-mods-shared=all
c) make
d) make install
基本的操作方法:
本文假設你的apahce安裝目錄為/usr/local/apache2,這些方法適合任何情況
apahce啟動命令:
推薦/usr/local/apache2/bin/apachectl start apaceh啟動
apache停止命令
/usr/local/apache2/bin/apachectl stop 停止
apache重新啟動命令:
/usr/local/apache2/bin/apachectl restart 重啟
要在重啟 Apache 伺服器時不中斷當前的連線,則應執行:
/usr/local/sbin/apachectl graceful
如果apache安裝成為linux的服務的話,可以用以下命令操作:
service httpd start 啟動
service httpd restart 重新啟動
service httpd stop 停止服務
配置轉發功能
開啟apache安裝目錄的conf資料夾下的httpd.conf
1、將以下兩行前的註釋字元 # 去掉:
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
2、在httpd.conf 檔案的最後加上轉發規則
例如:
ProxyPass /cas http://192.168.0.206:9090/cas
ProxyPassReverse /cas http://192.168.0.206:9090/cas
將/cas開頭的請求轉發到206伺服器9090埠的cas上
依次類推,其他的轉發也是通過這種方式設定,如:
ProxyPass /cas http://192.168.0.206:9090/cas
ProxyPassReverse /cas http://192.168.0.206:9090/cas
#bbs不轉發,採用apache處理
ProxyPass /bbs !
ProxyPassReverse /bbs !