Debian
Debian 中 LSB 初始化腳本的令人困惑的行為
我在 Debian Wheezy 中遇到了 LSB 初始化腳本的奇怪行為。我可以在以下範例中展示該問題:
該腳本
/etc/init.d/resolvconf
在S
執行級別0
和6
.# Default-Start: S # Default-Stop: 0 6
事實上,當我
chkconfig resolvconf on
打開腳本時,我看到符號連結已在各自的執行級別目錄中創建:$ ls /etc/rc?.d/*resolvconf /etc/rc0.d/K02resolvconf /etc/rc6.d/K02resolvconf /etc/rcS.d/S13resolvconf
當我用 關閉腳本時
chkconfig resolvconf off
,符號連結消失。到現在為止還挺好。現在,我決定不希望腳本啟動
S
(我將手動啟動它),但我仍然希望它在執行級別0
和6
. 我相應地更改預設開始:# Default-Start: # Default-Stop: 0 6
並打開腳本
chkconfig resolvconf on
。什麼也沒有發生。$ ls /etc/rc?.d/*resolvconf ls: cannot access /etc/rc?.d/*resolvconf: No such file or directory
沒有創建符號連結,並且腳本不會在執行級別
0
和6
.這裡發生了什麼?
我怎樣才能讓腳本只在執行級別執行(停止)
0
並且6
不開始S
?更新
正如@Rui F Ribeiro 所建議的那樣,我已經完全刪除了這
# Default-Start:
條線。現在,當我執行時chkconfig resolvconf on
,出現以下錯誤:insserv: Script resolvconf is broken: incomplete LSB comment. insserv: missing `Default-Start:' entry: please add even if empty. insserv: Default-Start undefined, assuming empty start runlevel(s) for script `resolvconf'
但是,符號連結已創建。
$ ls /etc/rc?.d/*resolvconf /etc/rc0.d/K02resolvconf /etc/rc6.d/K02resolvconf
但為什麼我會收到錯誤消息?
chkconfig
在計算腳本的執行級別時只讀取“預設啟動”行。它計算執行級別的數量,並且僅在“預設啟動”insserv
中請求至少一個執行級別時才呼叫…避免此行為的解決方法包括:
- 啟用服務
chkconfig -a
;- 禁用服務
chkconfig -d
;insserv
直接使用,insserv service
啟用service
,insserv -r service
刪除它。