サービスを再起動するには、「invoke-rc.d」または「service」を使用する必要がありますか?

サービスを再起動するには、「invoke-rc.d」または「service」を使用する必要がありますか?

どんな状況でどれが一番良いのか混乱しています。

invoke-rc.d apache2 restart

または

service apache2 restart

実際の違いはありますか?

man service興味深い点は次のとおりです。

サービスは、可能な限り予測可能な環境でSystem V初期化スクリプトを実行して、ほとんどの環境変数を削除し、現在の作業ディレクトリを/に設定します。

私は主にDebianに興味がありますが、Mint(やはりDebianベース)にも興味があります。

答え1

公式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他の目的にも使用されます。

答え2

問題は、スクリプトがサービスコマンドを試みる前に(動作する)呼び出し-rc.d(ドッカーコンテナに実行レベルがないため動作しません)を使用しようとするために発生する可能性があります。したがって、スクリプトでif条件を変更したり、サービスコマンドを使用するために存在しないパスを検索したりするのは怠惰な方法です。たとえば、

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

関連情報