在Linux系統下,一個Services的啟動、停止以及重啟通常是通過/etc/init.d目錄下的指令碼來控制的。然而,在啟動或改變運行層級時,是在/etc/rcX.d中來搜尋指令碼。其中X是運行層級的number。本文將解釋如何啟動、關閉和修改服務的運行。
當你在Debian下安裝一個新的服務,比如Apache2,安裝完成後,預設情況下它會啟動,並在下一次重啟後自動啟動。
但是如果你不是一直需要這個服務,只在需要的時候啟用它,你可以禁用它。直到你需要使用的時候,執行如下指令:
/etc/init.d/apache2 start
要實現這個目的,你需要先在/etc/rcX.d目錄中刪除所有apache2的符號連結,但這個方法操作麻煩,且效率低下。因此,我們建議你使用update-rc.d
命令來實現這個功能。
1、刪除一個服務
如果你想手動的完全禁用Apache2服務,你需要刪除其中的所有在/etc/rcX.d中的單一鏈路。但是如果使用update-rc.d,則非常簡單:
update-rc.d -f apache2 remove
參數-f是強制移除符號連結,即使/etc/init.d/apache2仍然存在。
Note:這個命令僅僅禁止該服務,直到該服務被升級。如果你想在服務升級後仍然保持被禁用。應該執行如下的命令:
update-rc.d apache2 stop 80 0 1 2 3 4 5 6 .
2、增加一個服務
如果你想重新添加這個服務並讓它開機自動執行,你需要執行以下命令:
update-rc.d apache2 defaults
並且可以指定該服務的啟動順序:
update-rc.d apache2 defaults 90
還可以更詳細的控制start與kill順序:
update-rc.d apache2 defaults 20 80
其中前面的20是start時的運行順序層級,80為kill時的層級。也可以寫成:
update-rc.d apache2 start 20 2 3 4 5 . stop 80 0 1 6 .
其中0~6為運行層級。
update-rc.d命令不僅適用Linux服務,編寫的指令碼同樣可以用這個命令設為開機自動運行。具體參見《簡單高效的防火牆指令碼》一文。
類似該功能還有一個類似的命令
chkconfig命令可以用來檢查、設定系統的各種服務。
這是Red Hat公司遵循GPL規則所開發的程式,它可查詢作業系統在每一個執行等級中會執行哪些系統服務,其中包括各類常駐服務。
使用文法:
chkconfig [--add][--del][--list][系統服務] 或 chkconfig [--level <等級代號>][系統服務][on/off/reset]
參數用法:
–add 增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啟動的敘述檔案內增加相關資料。
–del 刪除所指定的系統服務,不再由chkconfig指令管理,並同時在系統啟動的敘述檔案內刪除相關資料。
–level<等級代號> 指定讀系統服務要在哪一個執行等級中開啟或關畢。
使用範例:
chkconfig –list 列出所有的系統服務
chkconfig –add httpd 增加httpd服務
chkconfig –del httpd 刪除httpd服務
chkconfig –level httpd 2345 on 把httpd在運行層級為2、3、4、5的情況下都是on(開啟)的狀態。
原文地址:http://baobeituping.javaeye.com/blog/834495