我正在参加「掘金·启航计划」
问题描述
操作环境: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 后,确认一下自己的网页/接口是否可正常访问即可。