Windows下nginx报错解决:CreateFile() "xxx/logs/nginx.pid" failed
写在前面
本文给出Windows下nginx报错:CreateFile() "xxx/logs/nginx.pid" failed 的解决方法并分析了出错原因,其中 xxx 表示nginx的安装路径(即nginx.exe所在的路径)。注意,除非特别说明,否则后文一律使用 xxx 来表示nginx的安装目录。想直奔重点的读者请直接跳至解决小节,想了解原理的读者可以参考分析和验证小节。
正文
现象
在Windows下,当我们执行 nginx -s stop 或 nginx -s quit 或 nginx -s reload 时,可能会收到如下报错:
nginx: [error] CreateFile() "D:/software/nginx/logs/nginx.pid" failed (2: The system cannot find the file specified)
分析
当我们使用 start nginx 来启动nginx时,会在 xxx/logs/ 目录下生成名为 nginx.pid 的文本文件,该文件的内容只有一个数字,即nginx.exe进程对应的PID。无论是stop,quit还是reload,都需要利用nginx.exe的PID对其进行操作。然而,在某些特殊情况下(下文中我们会人为制造一种特殊情况),nginx.pid会丢失,故而上述三个命令会因找不到nginx.pid而报错。显然,此时也不可能stop,quit或reload成功,因为nginx连自己对应哪个进程都不知道。
解决
简单粗暴:1)通过 tasklist | findstr "nginx.exe" 查出nginx.exe对应的PID;2)在 xxx/logs/ 下新建文本文件 nginx.pid ,通过文本编辑器将上一步的PID写入(当然,这一步也可以通过命令行、脚本、动手编程等一切能达到目的的方式进行);3)执行 nginx -s stop 或 nginx -s quit 或 nginx -s reload 。
验证
【必读】
- 本验证中,nginx安装路径为 D:/software/nginx ,监听端口为5000。
- 呈现方式是命令行截图。用到的命令会在后边以文本形式给出,方便读者复制粘贴。
- 本文仅重点关注“找不到nginx.pid”的问题,对于验证过程中衍生的其它问题,本文仅给出答案的链接,且不保证对症下药(不是说文档内容有误,而是不保证正好能解决对应的问题)。在此也恳请知道答案的读者不吝赐教。
- 验证过程中的命令必须在nginx安装目录下执行,否则会出错。如果非要在任意目录下执行,请参考在下的另一篇博客,同时,也要记着对相关路径做相应改动。
验证过程如下图所示:

验证过程
其中,用到的命令整理如下:

1 start nginx
2 tasklist | findstr "nginx.exe"
3 netstat -ano | findstr "5000" # 需要将5000改为nginx实际监听的端口
4 type ./logs/nginx.pid
5 nginx -s quit
6 cmd /r dir /b .\\logs
7 13632 | Out-File -Encoding ASCII ./logs/nginx.pid # 需要将13632改为实际的PID
上图中提到的参考文档为[1]、[2]、[3]。这里对文档的作者表示衷心的敬佩与感谢。
写在后面
再次感谢本文引用的所有文档的读者。
在下刚接触nginx,本文为在下探索所得,错误疏漏之处在所难免,欢迎读者批评指正,您的批评是在下前进的不竭动力。
Windows下nginx报错解决:CreateFile() "xxx/logs/nginx.pid" failed的更多相关文章
- 【转载】struts应用在断网情况下启动报错解决办法(java/net/AbstractPlainSocketImpl.java:178:-1)
无意间struts应用在有网络的情况下启动正常,在断网的情况下启动报错,报错代码如下图所示: SEVERE: Exception starting filter struts2 Class: java ...
- windows下mongoengine报错False is not a read preference.的解决办法
mongoengine是基于pymongo的,后者的3.0版本在windows下似乎会有这个问题,解决方法就是降级: pip install pymongo==2.8 来源:upgrade to py ...
- openfl关于windows平台编译报错解决办法
报错信息: 无法打开程序数据库“e:\newproj\mainclient\bin\windows\cpp\obj\obj\msvc-debug-ncxp\vc.pdb”:如果要将多个 CL.EXE ...
- Tomcat启动报错java.net.AbstractPlainSocketImpl(java/net/AbstractPlainSocketImpl.java:178:-1)Struts在网络复杂情况下启动报错解决办法
SSH项目 在网络复杂的情况(具体规律未知)下,Tomcat启动时,报如下错误: [ERROR] 2014-08-12 14:52:58,484 [org.apache.struts2.dispatc ...
- windows下codeblocks报错undefined reference to `WSAStartup@8'|
Windows下C++Socket编程,调用WSAStartup函数报错:undefined reference to `WSAStartup@8'| 本人使用的是Codeblocks MinGW M ...
- nginx报错[error] CreateFile() "D:\Java-windows\nginx-1.16.0/logs/nginx.pid" failed (2: The system cannot find the file specified)
无论是nginx -s stop还是nginx -s reload命令,都会出现这个错误. 解决方法:使用命令创建/logs/nginx.pid文件,命令如下所示: nginx -c conf/ngi ...
- Windows测试Hadoop报错解决
错误1:HADOOP_HOME and hadoop.home.dir are unset 原因:没有在Windows配置环境变量 解决办法:配置环境变量:记得配置到bin目录 错误2:Could n ...
- activemq在windows下启动报错,闪退问题
查验了网上各种方法,都没搞定,最后楼主决定按照linux的解决套路来,把windows计算机名称改为纯英文字母,原计算机名:lee_pc,修改后为leepc,然后重启电脑,再重新运行activemq. ...
- windows svn post-commit 报错解决 error resolving case
在svn仓库目录下有个hooks目录,下面建一个 post-commit.cmd 文件,有代码提交到仓库,自动checkout到指定目录. @echo onSET REPOS=%1SET USER ...
随机推荐
- SpringBoot集成Druid
maven <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-b ...
- JS获取对象在内存中计算后的样式
通过obj.style的方式只能取得"内联style"的值,对于<style></style>中的css属性值,则无能为力 . 我们可以用obj.curre ...
- SQL Server中的distinct(不允许重复)
参考网址:https://blog.csdn.net/tswc_byy/article/details/81835023 一.建库和建表create database scortuse scortcr ...
- 使用C# 实现串口拨号器的SIM卡通信
参考网址:https://www.cnblogs.com/xugang/archive/2012/08/23/2652671.html 写此博客意为抛砖引玉,希望能和博客园的朋友们探讨一下关于.NET ...
- JavaWeb之数据库连接池
时间:2016-12-2 23:56 --DBCP连接池连接池参数(所有连接池参数都有默认值): 初始大小 最小空闲连接数 增量 最大空闲连接数 最大连接数 最长等 ...
- Linux centos7 pstree
2021-08-12 1.命令简介pstree (display a tree of processes) 命令用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以直观地看出是谁创建了谁. ...
- 第九章 Net 5.0 快速开发框架 YC.Boilerplate --定时服务 Quartz.net
在线文档:http://doc.yc-l.com/#/README 在线演示地址:http://yc.yc-l.com/#/login 源码github:https://github.com/linb ...
- javascript(1)简介
点击查看代码 ### javascript 1.JavaScript简介 javascript是一种轻量级的脚本语言,可以部署在多种环境,最常见的部署环境就是浏览器, 脚本语言: 它不具备开发操作系统 ...
- harbor高可用集群搭建
高可用harbor集群搭建 一.安装部署 1.节点角色 角色 数量 名称 备注 harbor主节点 2 harbor-1 harbor-2 双主模式 haproxy 2 HA-1 HA-2 需要通过k ...
- Selenium系列(十八) - Web UI 自动化基础实战(5)
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...