我在OS X 10.8上使用nginx
。新安装的nginx
但无法找到重新启动nginx的方法,kill nginx_pid
除kill 64116
之外。想知道是否有更好的方法可以重新启动nginx
。
在Google和SO上找到了一些方法,但没有效果:
nginx -s restart
sudo fuser -k 80/tcp ; sudo /etc/init.d/nginx restart
nginx -s restart
的错误消息是
nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
有时也会收到此错误消息:
nginx: invalid option: "-s restart"
答案 0 :(得分:92)
在启动nginx之前尝试运行sudo nginx
。
答案 1 :(得分:17)
重新加载配置文件:
sudo nginx -s reload
完全重启nginx
:
sudo nginx -s quit
sudo nginx
<强>详情
nginx没有restart
信号。从文档中,以下是主进程接受的信号:
SIGINT, SIGTERM Shut down quickly.
SIGHUP Reload configuration, start the new worker process with a new configuration, and gracefully shut down old worker processes.
SIGQUIT Shut down gracefully.
SIGUSR1 Reopen log files.
SIGUSR2 Upgrade the nginx executable on the fly.
SIGWINCH Shut down worker processes gracefully.
据推测,您可以手动将这些信号发送到进程ID,但nginx
命令具有标志nginx -s <signal>
,可以为您向主进程发送信号。您的选择是:
stop SIGTERM
quit SIGQUIT
reopen SIGUSR1
reload SIGHUP
手动无需使用pid。
编辑:刚刚意识到这些信息已经在其他答案的评论中。无论如何离开这里总结一下情况。
答案 2 :(得分:16)
你的nginx pid文件位置是什么?这在配置文件中指定,在配置脚本中指定编译时的默认路径。你可以这样搜索:
find / -name nginx.pid 2>/dev/null
(必须在nginx运行时发出)
解决方案:
sudo mkdir -p /usr/local/var/run/
ln -s /current/path/to/pid/file /usr/local/var/run/nginx.pid
答案 3 :(得分:6)
我这样做:
首先杀死进度
ps aux | grep nginx
kill -9 {pid}
然后启动nginx
nginx
有效!
答案 4 :(得分:2)
作为未来资源,您可以咨询http://wiki.nginx.org/CommandLine
Nginx
可能以root身份运行,因此您需要运行以下命令的变体来影响它。
sudo nginx -s stop | reload | quit | reopen
通常没有太多理由重新启动Nginx
Apache
所需的内容。如果您修改了配置文件,则可能只需要重新加载选项。
答案 5 :(得分:1)
检查此目录是否存在:
/usr/local/var/run
当nginx尝试初始化pid文件时,可能会发生此错误 本地化不存在。
答案 6 :(得分:1)
这里有一个错误。根据nginx在修改/重启apache和/或修改nginx配置时是否正在运行,可能会破坏此文件(实际上只是一个进程ID指针)。
当您尝试向nginx发送任何信号时,如
nginx -s quit;
nginx -s stop;
nginx -s reload;
nginx使用此文件来引用它需要发送信号的进程的ID。如果文件不存在nginx&amp;的活动运行进程之间的链接。 cli应用程序实际上已被破坏。
我实际上最终处于两个nginx进程同时运行的状态,因此两者都被杀死了。
要解决此问题,您可以通过Activity Monitor强制终止现有的nginx进程(然后运行nginx&amp;让cli app创建一个新的nginx.pid文件),或者如果你真的需要让nginx保持运行但是想要运行nginx -s reload - 在名为nginx.pid的/ run路径中手动创建一个文件,并插入当前运行的nginx进程的PID(通过Activity Monitor获取)。
答案 7 :(得分:1)
要重新加载自定义配置文件,请使用
nginx -s reload -c /etc/nginx/conf.d/<config file>.conf
答案 8 :(得分:1)
这可能只是意味着nginx已经停止 - 此刻没有运行 首先,确认nginx是否正在运行,执行:
$ ps aux | grep nginx
答案 9 :(得分:1)
试试这个:
sudo nginx -s stop
然后是:
sudo nginx
似乎nginx跟踪它的状态,如果你停两次,它会抱怨。但上面对我有用。
答案 10 :(得分:1)
我得到了与您相同的错误链接,我尝试了多种方法来修复它,但是它不起作用 之后,我运行命令行,它运行良好: nginx -c /usr/local/etc/nginx/nginx.conf
我从这里得到的信息 https://blog.csdn.net/wn1245343496/article/details/77974756答案 11 :(得分:0)
停止或重新加载的一种方法是通过以下命令
停止:
sudo /usr/local/nginx/sbin/nginx -s stop
仅在nginx运行时运行reload:
sudo /usr/local/nginx/sbin/nginx -s reload
通过这样做,你不会得到nginx:[error] open()“/ usr / local / var / run / nginx.pid”这个问题
答案 12 :(得分:0)
$ sudo nginx -c /usr/local/etc/nginx/nginx.conf
$ sudo nginx -s reload
源链接:https://blog.csdn.net/github_33644920/article/details/51733436