2008年11月2日 星期日

Debian和RH的差異

習慣使用RH的LINUX使用者,應該會覺得chkconfig和service,這兩個系統服務的配置使用指令和好用。

但跳過來使用Debian LINUX時,會有一時間,調適不過來的地方。
因為雖然都是LINUX,但畢竟還是有不少差異之處。
以下這篇文,在探究兩大LINUX的差異點,找出相同概念的指令使用方式。
以期能縮短想同時在兩者之間用功的LINUX學習者,上手的時間和門檻。

[引文:忘了從那邊撿來的?sorry!]
Debian GNU/Linux使用SysV模塊作為系統初始腳本。
與RH一樣,Debian使用一個擴展的SysV模塊,而Slackware主要是基於BSD的,
並為了使用SysV模塊而寫了幾個方便的腳本。

<定位SysV目錄>
Debian GNU/Linux,與大多數使用SysV模塊的系統一樣,將相關的目錄存放在/etc目錄之下。
也就是說,SysV目錄/etc/init.d是腳本自身,
而/etc/rc1.d,/etc/rc2.d直到/etc/rc6.d是特殊運行級別的目錄。
而管理所有這些的腳本為/etc/rc.d/rc。

然而RH是將SysV目錄全部放在/etc/rc.d目錄之下。
也就是就說,RH使用/etc/rc.d/init.d,而不是/etc/init.d。
為了兼容性,RH創建了一些由/etc指向/etc/rc.d下相關目錄的鏈接。

<使用Debian工具進行工作>
RH包含了一些用於自動管理SysV初始腳本過程的工具,也就是chkconfig民service。
Debian並包含這些工具,但是卻提供相似的管理工具:update-rc.d與invoke-rc.d。

<使用update-rc.d>
Debian的update-rc.d與RH的chkconfig工具相類似。
然而chkconfig是一個二進制程序,而update-rc.d是一 個Perl腳本。
這些工具有不同的命令行選項,但是卻執行類似的功能。
下表列出了update-rc.d的一些用法。如果要查看完整的信息,我們可以查閱相關的和冊頁。
+-----------------------------------------------------------------------------------+

  命令                                              功能
  update-rc.d -f [service] remove 從所有的運行級別配置目錄中是刪除指定的服務
  update-rc.d [service] start [order] [runlevels] 配置服務在運行級別列表中按指定的順序啟動
  update-rc.d [service] stop [order] [runlevels] 配置服務在運行級別列表中指定的順序停止
+-----------------------------------------------------------------------------------+

update-rc.d與RH的chkconfig之間最大的不同
就在於update-rc.d是要設置所以指向/etc/init.d目錄下服務腳本的運行級別鏈接,
而chkconfig是要每一個運行級別單獨配置服務。
從本質上來說,這也就意味著每次我們使用update-rc.d改變一個運行級別,我們就不得不改變所有的。
例如,下面的命令序列與命令chkconfig -level 2345 inetd off的作用相同:
+-----------------------------------------------------------------------------------+
  $ update-rc.d -f inetd remove
  $ update-rc.d inetd stop 20 0 1 2 3 4 5 6 .
+-----------------------------------------------------------------------------------+

第一個命令移除了所有的指向/etc/init.d/inetd服務腳本的運行級別鏈接,
-f 標志將會使得update-rc.d即使在inetd腳本本身已經存在的情況仍然進行相應的處理。

第二個命令在每一個運行級別創建了一個服務級別為20的停止腳本。
例如,這會創建一個/etc/rc3.d /K20inetd的符號鏈接來禁止運行級別3中inetd的運行。
(在這裏我們要注意的是我們要顯示的添加reboot與shutdown運行級別,
即 0和6,僅管其中所有的服務都會被設置成為[stop])。

作為另外的一個例子,下面所顯示的命令將會在運行級別3到5允許inetd的運行,
而在其他的 運行級別中則被禁止:
+-----------------------------------------------------------------------------------+
  $ update-rc.d -f inetd remove
  $ update-rc.d inetd start 20 3 4 5 . stop 20 0 1 2 6 .
+-----------------------------------------------------------------------------------+

Debian的update-rc.d最初看起來會叫人有一些迷惑,
但是旦我們明白,我們就會發現他可以多麼出色的完成我們的工作。

<使用invoke-rc.d>
Debian下與RH的service命令作用等同的命令為invoke-rc.d。
這兩個命令在大多數情況下的作用是完全相同的。
例如,service inetd start與invoke-rc.d inetd start有相同的作用
(啟動inetd服務,相應的停止服務的命令為invoke-rc.d inetd stop)。
invoke-rc.d命令也有一個額外的我們可以深入研究的命令參數,但是一般來說這兩個命令是相同的。



主要配置系統初始化過程的文件是/etc/inittab。這個文件管理在系統啟動時的腳本。
下面的是與其他的發行版本中的inittab文件所不同的幾個地方:

  1 Debian的默認運行級別是2。

  2 Debian並不會在/etc/inittab文件中中配置X Window系統顯示管理器。

  3 運行級別2與3是相同的,而運行級別4與5是相同的。

  4 運行級別4與5只會運行一個虛擬終端,而運行級別2與3卻會運行6個。

沒有留言:

搜尋此網誌

本站大事記

這個部落格(網站)內容以分享LINUX和延伸出的技術文章為主!
特別是為了工作和進修需要,搜集了不少網站連結。
希望對來這裡觀文的朋友們,有提供一些有用的資訊或文章。
但這裡的文章中,也包含個人的心情扎記和隨興言談……
若是當中沒有對上你的口味,請多包涵!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!
--原序文--
就是當LINUX遇上CISCO啦!他們的結合還能作什麼事…不就是讓這個世界的網路,串…串起來啊…不然你們那能上這網站看部落格!