Answers:
您可以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
适用于任何允许它的服务(已在单位文件中对其进行配置)。无需记住服务特定的命令。如果您有多个服务实例,这将更加有趣。使用service
或init.d
脚本是做同一件事的旧式/不建议使用的方法。尽管它们可能有效,但是在基于systemd的系统上不再支持也不建议使用它们。
当前,Centos 7和RHEL 7有所不同。使用systemctl reload 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