Linux教程-用紅帽子的chkconfig管理Init指令碼(轉)

ba發表於2007-08-11
Linux教程-用紅帽子的chkconfig管理Init指令碼(轉)[@more@]你的管理工具中多了個簡單但非常有用的東東。


我喜歡發現新的UNIX 命令,尤其是那些關於系統管理的。當我得知紅帽子釋出chkconfig 這個工具,我想起了在IRIX--一個從 Silicon Graphics Inc.而來的UNIX變種--下的 chkconfig。 IRIX的chkconfig被用來啟用/禁止系統初始化的時候的服務,無需編輯,重新命名或是移動 /etc中的init指令碼。

類似,Red Hat設計chkconfig的目的就是用來管理系統初始化的時候啟動的服務。不過,在我仔細閱讀手冊並作了些測試後,我很快發現Red Hat擴充套件了chkconfig,透過管理init指令碼的符號連線得以最終控制啟動關閉時的系統任務,真是節省時間!


關於啟動的基礎知識
------------------

當你的linux啟動時, 它顯示的第一個程式是 init。如果你以前沒看到過顯示init程式, 輸入:

# ps -ef | grep init

就會看到init的PID。 簡而言之,init 執行 /etc/inittab中描述的任務。

/etc/inittab中說明的任務在init之後就會啟動, 不過其它的任務啟動很簡單。例如,預設情況下 Red Hat 的/etc/inittab 對Ctrl-Alt-Delete鍵序設定了一個陷阱(trap),當這些鍵在控制檯模式下(不是xdm)同時按下 ,就會執行 shutdown 命令。 在啟動的時候, init基於/etc/inittab 的設定選項設定這個特性,不過在這個鍵序發生的時候才會執行。

inittab 的格式允許以``#'開始註釋行,正常的條目用 ``:' 界定。遵從如下的格式:

id:runlevel:action:process

id 代表使用者定義的唯一的標誌,
runlevel 可以使0-6的組合 或者為空,
action 來自一個關鍵詞keyword 描述init如何對待process,
process 是要執行的命令。


描述action欄位的各種關鍵字可以在inittab的手冊中找到。常用的關鍵字, 不是全部, UNIX 平臺包括這些:

initdefault--定義一個系統啟動後進入的執行級
wait --會被執行一次的程式 (當進入執行級的時候)。init 程式將等待這個程式被終止。
boot --定義一個啟動的時候執行的程式.
bootwait --與 boot 類似 ,不過 init在繼續執行前等待程式的終止
sysinit --定義一個程式在 boot的時候執行,在任何 boot或者bootwait inittab 條目的前面執行。

runlevel 欄位指明系統狀態。例如,執行級0代表系統關機,執行級6代表系統重啟 。不幸的事,不是所有的 Linux 釋出都遵循同樣的執行級定義 。在Red Hat中,預設情況下支援下面這些

0. 系統掛起
1. 但使用者Single-user mode
2. 多使用者,沒有NFS
3. 完整的多使用者Complete multiuser mode
4. 使用者自定義
5. X11 (XDM 登入)
6. 重新啟動

每一個執行級在 /etc/rc.d下都有個相應的目錄。如執行級5,目錄就是/etc/rc.d/rc5.d 。包含啟動這個執行級的時候執行的相關任務的相關檔案。在 Red Hat中, 這些檔案一般都是 shell 指令碼的符號連線,可以在/etc/rc.d/init.d中找到。

讓我們用一個簡單的例子看一下這些東西, 下面這兩個例子行來自我們的 inittab檔案:


id:3:initdefault:
l3:3:wait:/etc/rc.d/rc 3

在Red Hat系統中這很典型。一旦 init被啟動 ,讀取/etc/inittab 。 從第一行,我們知道 init 將在系統啟動後從執行執行級3。一旦我們到了那個執行級 ,第二行告訴 init 去執行指令碼 /etc/rc.d/rc 3 並且在執行前等待終止。

在/etc/rc.d目錄的rc 指令碼收到 3作為一個引數。 這個 3 相當於執行級3。結果 rc 指令碼執行/etc/rc.d/rc3.d目錄中的所有指令碼。它首先用引數``stop'執行所有K(代表 ``kill'殺掉程式或者服務)打頭的指令碼,接下來,它執行所有以 字母 S 打頭的指令碼,帶有引數``start' 啟動程式或者服務。 最後要指明,K和S指令碼的執行順序是基於排序的; 名為 S90mysql的指令碼將在 S95httpd之前執行。

/etc/rc.d/rc3.d 中的指令碼實際是對/etc/rc.d/init.d中檔案的符號連線。UNIX管理員可以在rc3.d中放制檔案, 實際情況下Red Hat的init.d目錄是所有指令碼的第一位置,然後生成邏輯連線到 rc*.d 目錄。手工作這些檔案的管理很煩人、瑣碎。 chkconfig現在接手這件事情! Red Hat 的這個chkconfig工具就是專為管理 /etc/rc.d/rc[0-6].d中的符號連線而設計。


察看chkconfig 的項(Entries)
chkconfig的二進位制軟體在 /sbin下,預設許可權允許任何使用者執行 。不過沒有root許可權的使用者只能察看當前的 chkconfig配置。輸入:

[root]# chkconfig --list | grep on

輸出的部分內容大致如下:
QUOTE:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947685/,如需轉載,請註明出處,否則將追究法律責任。

Linux教程-用紅帽子的chkconfig管理Init指令碼(轉)
請登入後發表評論 登入
全部評論

相關文章