為什麼多個守護程式同時存在 Upstart 腳本和 init.d 腳本?

為什麼多個守護程式同時存在 Upstart 腳本和 init.d 腳本?

我正在運行 Ubuntu 12.04.3 LTS 並安裝了多項服務,如 Samba、DHCP 伺服器等

當我執行“halt now”、“telinit 6”或類似命令時,我收到以下警告:

Since the script you are attempting to invoke has been converted
to an Upstart job, you may also use the...

我可以看到受影響的服務嘗試停止/啟動兩次。一次透過 Upstart 作業,再次透過 /etc/rcN.d 資料夾中針對 init.d 腳本的 S/K 符號連結。也許我可以簡單地刪除 /etc/rcN.d 資料夾中的符號連結。

流程範例:

  1. 從 shell 運行“立即停止”
  2. Upstart 停止 Samba(因為 Samba 有一個 Upstart conf 檔案)
  3. SysV 再次嘗試停止 Samba(因為還有 /etc/rc0.d/K20smbd 符號連結)

我不明白/想要步驟 3,因為它似乎沒有必要,並且顯示了一個醜陋的警告。

為什麼多個守護程式同時存在 Upstart 腳本和 init.d 腳本的符號連結?我必須手動清理每個 /etc/rcN.d 資料夾中的重複符號鏈接,這是正確的方法嗎?

答案1

Ubuntu 具有相容性init鏈接,每當您運行它們時,它們都會呼叫相應的新貴。

例如,如果您調用,sudo /etc/init.d/apache start您會連結到 upstart-job,它會向您顯示您應該使用的不錯的訊息訊息sudo services apache start,然後它會自行執行該命令。

ls -l /etc/init.d/network-manager 
lrwxrwxrwx 1 root root 21 Sep 18 14:02 /etc/init.d/network-manager -> /lib/init/upstart-job

cat /lib/init/upstart-job
#!/bin/sh -e
# upstart-job
#
# Symlink target for initscripts that have been converted to Upstart.
{ lots of ASCII awesomeness }

答案2

我發現這是我的 Puppet 腳本中的錯誤配置。

「服務」類型屬性「啟用」建立了 SysV 初始化腳本,而不是識別 Upstart 腳本。

相關內容