【问题标题】:ERROR : invalid PID number "" in "/run/nginx.pid"错误:“/run/nginx.pid”中的无效 PID 号“”
【发布时间】:2021-09-14 21:31:39
【问题描述】:

我的 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..

请提供解决方案..

【问题讨论】:

    标签: linux bash nginx


    【解决方案1】:

    尝试在不首先启动 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

    作为旁注:如果碰巧是 nginx 被 confd 等其他工具重新加载的情况,您还应该检查 nginx 是否实际上将其 pid 存储在 /run/nginx.pid 而不是 /var/run/nginx/nginx.pid

    【讨论】:

      【解决方案2】:

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

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

      这可能是因为/run/nginx.pid 文件为空,导致停止|开始|重新启动命令出现问题,因此您必须通过 sudo 对其进行编辑,并将当前运行的 nginx 服务(主进程)的 PI​​D 放在那里。现在,让我们看看下一行,它们是连接的。

      $ 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..
      

      这里无话可说;)

      总结:

      我认为使用 nginx 主进程 PID 编辑 /run/nginx.pid 文件应该可以解决问题。所以根据我上面的例子,这个文件应该是这样的:

      17711
      

      希望有帮助!

      【讨论】:

      • 谢谢,这帮了大忙,尤其是杀死了ps -aux | grep "nginx" 显示的进程。另外,你最后的笔记让我笑了。有时没有什么是你想看到的。
      • 大卫·马内斯确定。
      【解决方案3】:

      我有这个问题。我重新启动 nginx.service 并修复它。

      运行sudo systemctl restart nginx.service,然后在ubuntu中运行sudo nginx -s reload

      【讨论】:

        猜你喜欢
        • 2017-06-24
        • 2023-02-05
        • 2017-07-21
        • 2019-01-08
        • 2011-11-30
        • 2017-02-09
        • 1970-01-01
        • 2023-02-03
        • 1970-01-01
        相关资源
        最近更新 更多