nginx: [error] open() “varrunnginx.pid“ failed (2: No such file or directory) .nginx -s reload报错
作者:mmseoamin日期:2023-12-20

今天公司系统业务端需要重启nginx时 报错nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)    打开"/var/run/nginx.pid"失败 或没有如此文件或目录

nginx: [error] open() “varrunnginx.pid“ failed (2: No such file or directory) .nginx -s reload报错,第1张

这是执行杀死nginx进程后 导致的pid文件丢失 。所以当我们重载nginx时会提示找不到nginx.pid文件了。nginx 被停止时,var/run/nginx.pid 被删除了。 而 reopen 和 reload命令需要通过 nginx.pid 获取进程号,会去找 var/run/nginx.pid ,如果不存在,就报错了

解决方法:

启动nginx (启动前确保nginx还没启动 启动了的话 kill -9先杀掉nginx主进程号即可)

启动格式  nginx安装目录地址 -c nginx配文件路径

说明:-c 参数指定运行nginx系统的自定义配置文件

若加:使用自定义配置文件。

若不加:使用默认的nginx.conf(一般位于/usr/local/conf/nginx.conf,具体以实际情况为准)

[root@redis-zuul-eureka-mysql ~]# /usr/sbin/nginx -c /etc/nginx/nginx.conf   //启动nginx (或者 nginx -c /etc/nginx/nginx.conf)

[root@redis-zuul-eureka-mysql ~]# ps -ef | grep nginx  //查看nginx进程

nginx: [error] open() “varrunnginx.pid“ failed (2: No such file or directory) .nginx -s reload报错,第2张

 查看进程存在即表明启动成功  ;

再进入nginx安装目录执行nginx -s reload  就不会报错了。例如的我这里的安装目录是/usr/sbin/nginx  

[root@redis-zuul-eureka-mysql ~]# cd /usr/sbin/nginx   //进入nginx安装目录

[root@redis-zuul-eureka-mysql ~]# ./nginx -s reload    //平滑启动nginx

---------------------------------------------------------------------------------------------------------------------------------

题外话:要是平时nginx配置文件修改了的话 在重载前 最好检测下nginx.conf配置文件是否正确  可以执行以下命令

[root@redis-zuul-eureka-mysql ~]# /usr/sbin/nginx -t -c /etc/nginx/nginx.conf  //测试nginx配置文件是否正确

测试命令格式:nginx安装目录地址 -t -c nginx配文件路径

nginx: [error] open() “varrunnginx.pid“ failed (2: No such file or directory) .nginx -s reload报错,第3张

如图弹出以下提示 

nginx.conf syntax is ok

nginx.conf test is successful

说明配置文件正确。