如何重新加载nginx-systemctl或nginx -s?


24

通话之间有区别吗

systemctl reload nginx

并打电话

nginx -s reload

我知道,除了systemd之外,还有其他初始化系统,例如SysV和Upstart。因此,也许这个问题也适用于他们。

通过init系统发出此命令是更可取的还是我可以直接调用nginx本身?

提前致谢


1
实际上,如果您的系统支持它,我会更喜欢使用serviceinit.d,例如sudo service nginx reload
Mohammad AbuShady 2014年

Answers:


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 nginxnginx -s reload会,差不多,做同样的事情。

不同之处在于:

  • systemctl reload nginx 将在干净的环境(而不是当前用户环境)中执行命令;
  • systemctl reload适用于任何允许它的服务(已在单位文件中对其进行配置)。无需记住服务特定的命令。如果您有多个服务实例,这将更加有趣。

使用serviceinit.d脚本是做同一件事的旧式/不建议使用的方法。尽管它们可能有效,但是在基于systemd的系统上不再支持也不建议使用它们。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.