亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

用紅帽子的chkconfig管理Init腳本 (1)
2006-06-08   chinaunix

你的管理工具中多了個簡單但非常有用的東東。

我喜歡發現新的 UNIX 命令,尤其是那些關于系統管理的。當我得知紅帽子發布 chkconfig 這個工具,我想起了在 IRIX --一個從 SGI而來的 UNIX 變種--下的 chkconfig。IRIX 的 chkconfig 用來激活/禁止系統初始化的時候的服務,無需編輯,重命名或是移動 /etc 中的 init 腳本。

類似,Red Hat 設計 chkconfig 的目的就是用來管理系統初始化的時候啟動的服務。不過,在我仔細閱讀手冊并作了些測試后,我很快發現 Red Hat 擴展了chkconfig,通過管理 init 腳本的符號連接得以最終控制啟動關閉時的系統任務,真是節省時間!

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

# ps -ef | grep init

/etc/inittab中說明的任務在init之后就會啟動, 不過其它的任務啟動很簡單。例如,默認情況下 Red Hat 的 /etc/inittab 對 Ctrl-Alt-Delete 鍵序設置了一個 trap,當這些鍵在控制臺模式下(不是 xdm)同時按下 ,就會運行 shutdown 命令。 在啟動的時候,init 基于 /etc/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 的二進制軟件在 /sbin 下,默認權限允許任何用戶執行。不過沒有 root 權限的用戶只能察看當前的 chkconfig 配置。輸入:

[root]# chkconfig --list | grep on

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

gpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off

syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off

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

random 0:off 1:off 2:on 3:on 4:on 5:on 6:off

rawdevices 0:off 1:off 2:off 3:on 4:on 5:on 6:off

atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

apmd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off

sshd 0:off 1:off 2:on 3:off 4:on 5:on 6:off

portmap 0:off 1:off 2:off 3:off 4:on 5:on 6:off

crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

xfs 0:off 1:off 2:on 3:off 4:on 5:on 6:off

httpd 0:off 1:off 2:off 3:on 4:off 5:off 6:off

在輸出的每一行,最開始的段代表在 /etc/rc.d/init.d 中的 init 腳本名。 其余的區段表示腳本進入各個運行級時的各運行級 0-6 的狀態。 例如,crond 應當在進入運行級 2、3、4、5 的時候啟動,當進入 0、1、 6的時候停止。我們可以通過 find 命令查找在 /etc/rc.d 中所有 crond 結尾的文件確信我們設置的正確性:

[root]# find /etc/rc.d -name '*crond' -print

/etc/rc.d/init.d/crond

/etc/rc.d/rc0.d/K60crond

/etc/rc.d/rc1.d/K60crond

/etc/rc.d/rc2.d/S40crond

/etc/rc.d/rc3.d/S40crond

/etc/rc.d/rc4.d/S40crond

/etc/rc.d/rc5.d/S40crond

/etc/rc.d/rc6.d/K60crond

[root]# find /etc/rc.d -name '*crond' -exec file {} ;

/etc/rc.d/init.d/crond: Bourne shell script text

/etc/rc.d/rc0.d/K60crond: symbolic link to

../init.d/crond

/etc/rc.d/rc1.d/K60crond: symbolic link to

../init.d/crond

/etc/rc.d/rc2.d/S40crond: symbolic link to

../init.d/crond

/etc/rc.d/rc3.d/S40crond: symbolic link to

../init.d/crond

/etc/rc.d/rc4.d/S40crond: symbolic link to

../init.d/crond

/etc/rc.d/rc5.d/S40crond: symbolic link to

../init.d/crond

/etc/rc.d/rc6.d/K60crond: symbolic link to

../init.d/crond

這表明在 init.d 中找到的 crond 是一個 shell 腳本,找到的所有其他的文件都是對 crond 腳本的符號連接。

調整 chkconfig 的項幾乎和列出現在的設置一樣容易。格式:

chkconfig [--level <運行級>] <名字>

例如,如果我們決定在運行級 2 禁止crond,

# chkconfig --level 2 crond off

[root]# find /etc/rc.d -name '*crond' -print

/etc/rc.d/init.d/crond

/etc/rc.d/rc0.d/K60crond

/etc/rc.d/rc1.d/K60crond

/etc/rc.d/rc2.d/K60crond

/etc/rc.d/rc3.d/S40crond

/etc/rc.d/rc4.d/S40crond

/etc/rc.d/rc5.d/S40crond

/etc/rc.d/rc6.d/K60crond

切記: chkconfig 不是立即自動禁止或激活一個服務的,它只是簡單的改變了符號連接,超級用戶可以用這個命令 /etc/rc.d/init.d/crond stop 立刻禁止 crond 服務。最后,你可以用一個命令行激活/禁止多個運行級的某個命令 。 例如輸入:

chkconfig --levels 2345 crond on

會設定 crond 在運行級2, 3, 4 和 5啟動。

熱詞搜索:

上一篇:Windows XP超強支持工具集全面接觸(2)
下一篇:用紅帽子的chkconfig管理Init腳本 (2)

分享到: 收藏