nginx-systemctlまたはnginx -sをリロードする方法は?


24

呼び出しに違いはありますか

systemctl reload nginx

そして呼び出し

nginx -s reload

systemdの他に、SysVやUpstartのような他の初期化システムがあることを知っています。したがって、おそらくこの質問は彼らにも当てはまります。

initシステムを介してこのコマンドを発行することは望ましいですか、またはnginx自体を呼び出すことはできますか?

前もって感謝します


1
お使いのシステムがそれをサポートしている場合、実際に、私が使用して希望serviceinit.dのように、sudo service nginx reload
モハマドAbuShady

回答:


23

ユニットファイル(私のシステムにある)のセクションにあるオプションをsystemd reload nginx見ると、どうなるかがわかります。ExecReload=[Service]nginx.service/usr/lib/systemd/system/nginx.service

$ systemctl cat nginx | grep ExecReload=

または実行することにより:

$ systemctl show nginx.service --property=ExecReload

私のシステムでは、次のものが得られます。

ExecReload=/usr/bin/kill -HUP $MAINPID

からnginx(8)

-s signal      Send a signal to the master process. The argument signal
               can be one of: stop, quit, reopen, reload. The following
               table shows the corresponding system signals:

               stop    SIGTERM
               quit    SIGQUIT
               reopen  SIGUSR1
               reload  SIGHUP

このようにsystemctl reload nginxしてnginx -s reload、う、ほぼ、同じことを行います。

違いは次のとおりです。

  • systemctl reload nginx 現在のユーザー環境ではなく、クリーンな環境でコマンドを実行します。
  • systemctl reloadそれを許可するサービス(ユニットファイルで構成されている)で機能します。サービス固有のコマンドを覚える必要はありません。サービスのインスタンスが複数ある場合、これはさらに興味深いです。

serviceor init.dスクリプトを使用することは、同じことを行うレガシー/非推奨の方法です。それらは機能するかもしれませんが、systemdベースのシステムではサポートも推奨もされません。


5

現在、Centos 7とRHEL 7には違いがあります。systemctlreload nginxを使用しても、構成は検証されません。

次のバグを参照してください:https : //bugzilla.redhat.com/show_bug.cgi?id=1565377

したがって、nginx -s reloadを使用するか、nginxユニットファイルを更新して次のreloadコマンドを使用することをお勧めします。

ExecReload=/usr/sbin/nginx -s reload

https://bugzilla.redhat.com/attachment.cgi?id=1419614&action=diff

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.