写在前面

本文给出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 。

验证

必读

  1. 本验证中,nginx安装路径为 D:/software/nginx ,监听端口为5000。
  2. 呈现方式是命令行截图。用到的命令会在后边以文本形式给出,方便读者复制粘贴。
  3. 本文仅重点关注“找不到nginx.pid”的问题,对于验证过程中衍生的其它问题,本文仅给出答案的链接,且不保证对症下药(不是说文档内容有误,而是不保证正好能解决对应的问题)。在此也恳请知道答案的读者不吝赐教。
  4. 验证过程中的命令必须在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的更多相关文章

  1. 【转载】struts应用在断网情况下启动报错解决办法(java/net/AbstractPlainSocketImpl.java:178:-1)

    无意间struts应用在有网络的情况下启动正常,在断网的情况下启动报错,报错代码如下图所示: SEVERE: Exception starting filter struts2 Class: java ...

  2. windows下mongoengine报错False is not a read preference.的解决办法

    mongoengine是基于pymongo的,后者的3.0版本在windows下似乎会有这个问题,解决方法就是降级: pip install pymongo==2.8 来源:upgrade to py ...

  3. openfl关于windows平台编译报错解决办法

    报错信息:  无法打开程序数据库“e:\newproj\mainclient\bin\windows\cpp\obj\obj\msvc-debug-ncxp\vc.pdb”:如果要将多个 CL.EXE ...

  4. 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 ...

  5. windows下codeblocks报错undefined reference to `WSAStartup@8'|

    Windows下C++Socket编程,调用WSAStartup函数报错:undefined reference to `WSAStartup@8'| 本人使用的是Codeblocks MinGW M ...

  6. 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 ...

  7. Windows测试Hadoop报错解决

    错误1:HADOOP_HOME and hadoop.home.dir are unset 原因:没有在Windows配置环境变量 解决办法:配置环境变量:记得配置到bin目录 错误2:Could n ...

  8. activemq在windows下启动报错,闪退问题

    查验了网上各种方法,都没搞定,最后楼主决定按照linux的解决套路来,把windows计算机名称改为纯英文字母,原计算机名:lee_pc,修改后为leepc,然后重启电脑,再重新运行activemq. ...

  9. windows svn post-commit 报错解决 error resolving case

    在svn仓库目录下有个hooks目录,下面建一个 post-commit.cmd 文件,有代码提交到仓库,自动checkout到指定目录.   @echo onSET REPOS=%1SET USER ...

随机推荐

  1. mysql导出word的表结构操作

    mysql导出word的表结构操作 1.首先准备好mysql的相关插件mysql-connector-odbc和DBExportDoc 百度网盘地址: 链接:https://pan.baidu.com ...

  2. C# volatile 的使用

    class Program { private static volatile bool bChanged; static void Main(string[] args) { Thread t1 = ...

  3. SpringBoot使用@Scheduled创建定时任务

    定时任务一般会存在中大型企业级项目中,为了减少服务器.数据库的压力往往会采用时间段性的去完成某些业务逻辑.比较常见的就是金融服务系统推送回调,一般支付系统订单在没有收到成功的回调返回内容时会持续性的回 ...

  4. Linux下的Shell工作原理

    Linux下的Shell工作原理 Linux系统提供给用户的最重要的系统程序是Shell命令语言解释程序.它不属于内核部分,而是在核心之外,以用户态方式运行.其基本功能是解释并执行用户打入的各种命令, ...

  5. Redis3.0.0集群一键脚本 -by古斌

    下载地址(以交由码云托管): https://gitee.com/gubin0412/Redis3.0.0 赋予脚本执行权限  chmod +x redis-gubin.sh 使用 ./redis-g ...

  6. CrackMe-Cycle

    转载自 OllyDBG入门教程   PS:自己逆在 最后的时候总会崩,不知道为什么. 我们输入用户名 CCDebuger,序列号 78787878,点上面那个"Check"按钮,呵 ...

  7. 获取本地请求的真实IP地址

    1 /** 2 * 自定义访问对象工具类 3 * 4 * 获取对象的IP地址等信息 5 * 6 */ 7 public class CusAccessObjectUtil { 8 9 /** 10 * ...

  8. Python__bs4模块

    1 - 导入模块 from bs4 import BeautifulSoup 2 - 创建对象 fp = open('./test.html','r',encoding='utf-8') soup = ...

  9. Java并发知识总结,超详细!

    首先给大家分享一个github仓库,上面放了200多本经典的计算机书籍,包括C语言.C++.Java.Python.前端.数据库.操作系统.计算机网络.数据结构和算法.机器学习.编程人生等,可以sta ...

  10. WinUI 3学习笔记(3)—— ComboBox & DropDownButton & SplitButton

    本篇想介绍相对小众但颇具使用价值的控件SplitButton,提到SplitButton难免会拿来与ComboBox进行比较,同时在WinUI 3的控件库中,还有一个默默无闻的DropDownButt ...