错误:“/run/nginx.pid”中的PID编号“”无效

时间:2016-03-23 10:57:04

标签: linux bash nginx

我的nginx没有在80端口上启动。

我添加了以下详细信息:

$ nginx -s reload
2016/03/23 16:11:27 [error] 24992#0: invalid PID number "" in "/run/nginx.pid"
$ ps -ef | grep nginx
root     25057  2840  0 16:16 pts/1    00:00:00 grep --color=auto nginx
$ kill -9 25057
bash: kill: (25057) - No such process
$ service nginx start
Nothing..

请提供解决方案..

2 个答案:

答案 0 :(得分:9)

尝试在没有首先启动nginx的情况下运行nginx -s reload将导致错误,因为当你告诉它重新启动时,nginx会查找包含它的主pid的文件。在你的情况下,似乎nginx没有运行,因此包含该id的文件不存在。

通过运行kill -9 25057,你试图杀死自己不再存在的命令ps -ef | grep nginx,所以你得到了“没有这样的过程”。

为了确保一切顺利,我会使用nginx -s stop停止nginx,然后使用nginx然后nginx -s reload启动它以检查一切是否正常。在任何情况下,日志文件都可能会告诉您/var/log/nginx/error.log上是否存在错误。

如果可行,您可以尝试访问http://localhost:80,或者您已经配置了nginx,并且还要按照错误日志访问日志/var/log/nginx/error.log

作为旁注:如果有任何机会恰好是某些其他工具(如confd)重新加载nginx的情况,您还应该检查nginx是否实际将它的pid存储在/run/nginx.pid而不是{{1 }}

答案 1 :(得分:2)

让我们先谈谈我们在这里拥有什么:

$ nginx -s reload
2016/03/23 16:11:27 [error] 24992#0: invalid PID number "" in "/run/nginx.pid"

可能是因为/run/nginx.pid文件为空,这会导致stop | start | restart命令出现问题,因此您必须通过sudo对其进行编辑,并将当前正在运行的nginx服务的PID(主进程)放在该文件中。现在,让我们看一下与之连接的下一行。

$ ps -ef | grep nginx
root     25057  2840  0 16:16 pts/1    00:00:00 grep --color=auto nginx
$ kill -9 25057
bash: kill: (25057) - No such process

您正试图在这里杀不Nginx的的主要过程。首先尝试运行以下命令以查看nginx主进程及其工作进程的PID:

$ ps -aux | grep "nginx"
root     17711  0.0  0.3 126416  6632 ?        Ss   18:29   0:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 17857  0.0  0.2 126732  5588 ?        S    18:32   0:00 nginx: worker process
ubuntu   18264  0.0  0.0  12916   984 pts/0    S+   18:51   0:00 grep --color=auto nginx

接下来,杀死两个:

$ sudo kill -9 17711
$ sudo kill -9 17857

,然后尝试再次运行nginx。

$ service nginx start
Nothing..

什么都没有在这里说;)

摘要:

我觉得编辑/run/nginx.pid与nginx的主进程PID应该解决该问题的文件。因此,根据我上面的示例,该文件应如下所示:

17711

希望有帮助!