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 ...
随机推荐
- 题解 big
传送门 题面里那个式子 考场上我推了半天那个式子代表什么意思,但就是没想到位运算 \(\lfloor \frac{2x}{2x^n} \rfloor \iff x\gg(n-1)\), 即将x的第n位 ...
- Spring-Boot注入自定义properties文件配置
创建wzq.properties wzq.properties注入User实体类中 @PropertySource(value = "classpath:wzq.properties&quo ...
- .NET Core 微服务学习与实践系列文章目录索引(2019版)
参考网址: https://archy.blog.csdn.net/article/details/103659692 2018年,我开始学习和实践.NET Core,并开始了微服务的学习,以及通过各 ...
- MySQL——分表,分库操作
说明 大数据量并且访问频繁的表,将其分为若干个表.如果不分的话,进行一次查询就会将表锁住,导致不能进行其他操作,故分表.表分割垂直分割应用场景:热数据放一个表里,冷数据放一个表里.冷数据使用MyIsa ...
- WPF 中的 button style 的修改
<Style x:Key="ButtonStyleTransBack" TargetType="Button"> <Setter Proper ...
- Java常用类之字符串类
String 的特性 public final class String implements java.io.Serializable, Comparable<String>, Char ...
- WPF设计自定义控件
在实际工作中,WPF提供的控件并不能完全满足不同的设计需求.这时,需要我们设计自定义控件. 这里LZ总结一些自己的思路,特性如下: Coupling UITemplate Behaviour Func ...
- QT怎样插入图片
工具/原料 QT designer 方法/步骤 1 首先创建一个Manwindow窗口 拖一个label到窗口上 把文字去掉,然后把label放大 找到stylesheet一栏 ...
- 【转载】vim 中文帮助手册的安装
本文出处http://hi.baidu.com/bkhcvzdvmjfkpyr/item/9c238224c1a69498b6326360 vim自带的帮助手册是英文的, 对平时编程的人来说没有多大阅 ...
- vue-bluJavascript - Vue - 插件(swiper、vue-preview)
swiper swiper是一个支持滑动效果的js插件,它也支持在vue中使用,主要用于移动端的触摸滑动操作.Swiper中文网. 安装和导入插件 npm i vue-awesome-swiper - ...