回答:
ユニットファイル(私のシステムにある)のセクションにあるオプションを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ベースのシステムではサポートも推奨もされません。
現在、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
serviceかinit.dのように、sudo service nginx reload