Linux

應該使用“invoke-rc.d”還是“service”來重啟服務?

  • May 16, 2020

我對哪種情況最好以及在哪種情況下感到困惑:

invoke-rc.d apache2 restart

或者

service apache2 restart

有真正的區別嗎?

man service有以下有趣的一點:

服務在盡可能可預測的環境中執行 System V 初始化腳本,刪除大多數環境變數並將目前工作目錄設置為 /。

我主要對 Debian 感興趣,但也對 Mint(也基於 Debian)感興趣。

關於守護程序的官方 Debian wiki 頁面說要使用service

# service ssh restart
Restarting OpenBSD Secure Shell server: sshd.

然而,在功能上serviceinvoke-rc.d大部分是等效的:

  • invoke-rc.d根據命令的手冊頁,是軟體包維護者腳本的首選命令
  • service有一個獨特的--status-all選項,可以查詢所有可用守護程序的狀態

似乎service是面向使用者的命令,而invoke-rc.d有其他用途。

問題可能是因為您的腳本在嘗試服務命令(這將起作用)之前嘗試使用 invoke-rc.d (這不起作用,因為 docker 容器中沒有執行級別)。所以改變腳本中的 if 條件或者懶惰的方式是讓它尋找一個不存在的路徑,所以它會使用 service 命令。例如:

if [ -x /xxxusr/sbin/invoke-rc.d ]; then /usr/sbin/invoke-rc.d $OMSAGENT_WS start elif [ -x /sbin/service ]; then /sbin/service $OMSAGENT_WS start

引用自:https://unix.stackexchange.com/questions/136481