2010年12月23日 星期四

[Linux 命令] chkconfig : 設定系統在不同的runlevel之下所執行的服務

屬性 : 伺服器相關 - 伺服器管理 
語法 : 

chkconfig [參數] [服務名稱]
chkconfig [--level runlevel] 服務名稱

參數 | 功能 
--add | 增加服務名稱在目前的runlevel之下
--del | 刪除目前runlevel下的服務名稱
--list | 列出該服務名稱在不同runlevel之下的狀態, 不加服務名稱則會列出所有的服務.

Ps. 有關runlevel相關訊息, 請參考這裡

執行範例 : 
* 列出apache在不同runlevel的狀態. 
server1:~ # chkconfig --list apache2
apache2 0:off 1:off 2:off 3:off 4:off 5:off 6:off


* 將DNS Server 在runlevel 3與5時啟動 
server1:~ # chkconfig --list | grep named
named 0:off 1:off 2:off 3:off 4:off 5:off 6:off
server1:~ # chkconfig --level 35 named on
server1:~ # chkconfig --list named
named 0:off 1:off 2:off 3:on 4:off 5:on 6:off


* 列出所有在runlevel 5啟動的服務 
server1:~ # chkconfig --list | grep 5:on
acpid 0:off 1:off 2:on 3:on 4:off 5:on 6:off
alsasound 0:off 1:off 2:on 3:on 4:off 5:on 6:off
auditd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
...(以下省略)...


相關知識 
Linux 與許多 Unix 系統都有 執行層級 runlevel 的觀念,意即藉由控制實際啟動的服務組合,而改變系統用途。舉例而言,一台網頁伺服器,我們會希望他在開機時,自動啟動 Apache Server。每一個不同的執行層級會執行對應的各個 script 檔,而每一執行層級的 script 檔備存放在 /etc/rc.d/rc[x].d 目錄,其中 [x] 即為 runlevel。以下說明各個層級的意義: 
 

如何設定預設執行層級 runlevel? 
編輯 /etc/inittab,範例如下: 
  1. # Level to run in  
  2. # 定義預設執行層級,在此 runlevel 為 2  
  3. id:2:initdefault:  
  4.   
  5. # System initialization before anything else.  
  6. # 系統初始化  
  7. si::sysinit:/etc/rc.d/bcheckrc  
  8.   
  9. # Runlevel 0,6 is halt and reboot, 1 is maintenance mode.  
  10. # 個別運作層級的處始化  
  11. l0:0:wait:/etc/rc.d/rc.halt  
  12. l1:1:wait:/etc/rc.d/rc.single  
  13. l2:2345:wait:/etc/rc.d/rc.multi  
  14. l6:6:wait:/etc/rc.d/rc.reboot  
開機時,即會根據 runlevel ,執行 /etc/rc.d/rc[x].d 目錄下的 script。 

如何改變執行層級 runlevel? 
當想進行系統維護需要進入單人模式,或是要從文字登入畫面改成 GUI 登入畫面,或是想要關閉系統或重新開機,改變系統當時的執行層級,是眾多的做法之一。 但在運作之前,可能會需要了解一下目前的 runlevel,而使用的指令即為 runlevel 
$ runlevel
N 2

第一個字代表前次的執行層級,第二個數字代表現在的執行層級。N 代表前次與現在一樣沒有變過。 知道了目前的執行層級後,可利用 init 或 telinit 命令來改變執行層級,telinit 通常是 init 的硬連結或軟連結,兩者使用方法完全相同,以下為範例: 
# init 0 // 讓系統立刻關機
# init 6 // 讓系統立刻重新開機
# init 1 // 讓系統立刻進入單人模式



補充說明 : 
1. 這是重要的服務管理指令, 透過他我們可以了解或是設定在不同runlevel下的服務. 
執行層級 runlevel

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...