Linux
應該使用“invoke-rc.d”還是“service”來重啟服務?
我對哪種情況最好以及在哪種情況下感到困惑:
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.
然而,在功能上
service
和invoke-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