や のようなコマンドの多くはnginx -s reload
、 やとnginx -s stop
(ほぼ?) 同じであるように思われることに気付きましたservice nginx reload
。service 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 start
Tomcat を呼び出すだけの複雑な場合もあります。
アプリケーションを起動するための統一された自動的な方法を提供するために、ディストリビューションは init スクリプト (または類似のもの) を提供しており、新しい Ubuntu では次の 3 つのバリエーションがあります。
- 現代のシステム:
systemctl <verb> nginx
、 - レガシー(Ubuntu の場合)成り上がり者:
service nginx <verb>
、 - 最も古い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 quit
5 秒待機し、nginx がまだ実行されている場合は失敗を通知します。
systemctl <verb> <service>
一般的には、アプリケーションを単独で起動するのではなく、コマンドを使用する方が適切です。
編集: 実はシステムコマンドを実行するだけでなく、入力/出力をsystemdジャーナル、それは利用可能なリソースを制限します(cグループ) とシステムの他の部分の可視性 (名前空間)、プロセスを構成する機能そしておそらくそれ以上の何か。