1. 原因
因为启动了两次服务,开启了多个进程,所以关掉之后仍然可以打开网页。
2. 表象
启动了多次nginx服务器,运行第二次nginx -s stop
命令来关闭服务器时,报如下错误:
nginx: [error] CreateFile() "E:\xxx\nginx-1.22.0/logs/nginx.pid" failed (2: The system cannot find the file specified)
。为什么呢?nginx.pid文件会记录服务进程pid,两次启动可能最后一次启动的进程会覆盖第一次的文件,因此关闭服务器之后,只是关闭了最后一次的服务进程,而前面的进程都仍在运行,所以还能打开网页(ps:这段是我个人猜测,大概率不是这样,没有往下研究,知道的麻烦来指导一下吧···)。
那通过tasklist /fi "imagename eq nginx.exe"
来看一下进程吧,果然还有进程在运行:
再通过任务管理器看看吧,确实也还在:
解决方法
- 通过任务管理器的来关吧,找到nginx.exe进程结束任务就好了,然后再通过
tasklist /fi "imagename eq nginx.exe"
命令或者打开网页看看服务还在不在,还在的话再通过任务管理器关闭,如此往复循环直到再无进程。 - 通过命令来关闭。
通过tasklist /fi "imagename eq nginx.exe"
可以看到进程的pid,如图二所示。然后通过taskkill -t -f /pid pid号
命令来关闭进程就解决了,如下图所示。