[开发笔记] - nginx重启异常:[error] open() "/run/nginx.pid"

208 阅读2分钟

我正在参加「掘金·启航计划」


问题描述

操作环境:Linux 服务器。

出现的问题:执行重启nginx服务命令时,nginx -s reload,出现下面的报错

nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)

问题解析

Linux 服务器如果出现意外的重启,可能会删除掉 nginx.pid 文件。


解决方案

网上有很多方案,例如: nginx -c /etc/nginx/nginx.conf,但是不一定能解决。

最简单暴力的方法还是直接重启 nginx 服务。

重启方法如下:

步骤一:关闭所有的 nginx 进程

查询所有 nginx 的进程: ps -ef|grep nginx,获取进程 id (PID)。

一般会得到下信息,相信的根据自身环境获取的进程数据为准:

# 注释不存在现实返回的结果,只是为了更好的理解
# 用户名  PID                                    描述
ubuntu   14708 21540  0 10:50 ?        00:00:00 nginx: worker process
ubuntu   14709 21540  0 10:50 ?        00:00:00 nginx: cache manager process
ubuntu   14828 14490  0 10:51 pts/2    00:00:00 grep --color=auto nginx
root     20040     1  0 Jul27 ?        00:00:00 nginx: master process nginx

我们可以先由主进程 master process 开始关闭进程 。

执行命令 kill 20040,然后再执行一下 ps -ef|grep nginx 确认是否成功 kill 了。

依次把其他进程一一关闭。(注意 PID = 14828 的不需要关闭)

步骤二:重启nginx

直接执行 nginx 命令即可(没错就是一个单词),如果有配置修改了可以再执行一下 nginx -s reload命令。

启动完 nginx 后,确认一下自己的网页/接口是否可正常访问即可。