`nginx -s` は `service nginx` と同じですか?

`nginx -s` は `service nginx` と同じですか?

や のようなコマンドの多くはnginx -s reload、 やとnginx -s stop(ほぼ?) 同じであるように思われることに気付きましたservice nginx reloadservice nginx stop

これらの「接頭辞」は実際に交換可能ですか? どちらかが何らかの形でもう一方を呼び出すのでしょうか?

答え1

Ubuntu 18.04(つまり最近のLinuxディストリビューション)を実行しているので、3番目のものをお勧めします。"エイリアス"コマンド:systemctl reload nginxおよび/etc/init.d/nginx reload

全体像は次のようになります。すべてのサーバー/アプリケーションには、起動、停止、リロードなどを行う独自の方法があります。これは、呼び出すだけの単純な場合もあれば、nginxいくつかの環境変数を設定してjava <a_lot_of_options> org.apache.catalina.startup.Bootstrap startTomcat を呼び出すだけの複雑な場合もあります。

アプリケーションを起動するための統一された自動的な方法を提供するために、ディストリビューションは init スクリプト (または類似のもの) を提供しており、新しい Ubuntu では次の 3 つのバリエーションがあります。

  1. 現代のシステム: systemctl <verb> nginx
  2. レガシー(Ubuntu の場合)成り上がり者: service nginx <verb>
  3. 最も古いSysV 初期化: /etc/init.d/nginx <verb>.

Ubuntuの場合システム実際に実行されているのは、他のものを呼び出すシステムnginx の設定 (/lib/systemd/system/nginx.serviceファイル) には次の内容が含まれます。

ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid

それで:

  • systemctl reload nginxを呼び出しますnginx -s reloadが、追加オプション-g 'daemon on; master_process on;'がこれら 2 つの設定オプションを上書きします。
  • systemctl stop nginxヘルパープログラムを使用してstart-stop-daemon監視するnginxSIGQUITシャットダウンします。このプログラムはと同じシグナルを nginx に送信し、 nginx -s quit5 秒待機し、nginx がまだ実行されている場合は失敗を通知します。

systemctl <verb> <service>一般的には、アプリケーションを単独で起動するのではなく、コマンドを使用する方が適切です。

編集: 実はシステムコマンドを実行するだけでなく、入力/出力をsystemdジャーナル、それは利用可能なリソースを制限します(cグループ) とシステムの他の部分の可視性 (名前空間)、プロセスを構成する機能そしておそらくそれ以上の何か。

関連情報