Nginx重启报错: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)_nginx: [error] open() "/usr/local/nginx/logs/nginx-程序员宅基地

技术标签: Nginx  nginx  linux  服务器  

       今天因为阿里云的ECS云服务器内存不够用了,直接进行了系统的配置升级并且重启了系统,因为系统里安装了Nginx + Tomcat 服务器配置,因此先重启了Tomcat,接着准备重启Nginx, 执行命令:/usr/local/nginx/sbin/nginx -s reload,结果启动失败,报出了错误:nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)。难道系统升个级还把原先运行正常的软件给搞出问题来了,赶紧查看了数据库,还好正常运行,看来应该不是什么大问题,于是慢下心来查找错误原因。

       首先看这个错误提示是 nginx.pid 文件缺失导致的错误,搜了一下网上的解决方案,其中一个方案是新建一个nginx.pid文件;或者采用第二方案:第一步先Kill nginx;第二步是执行启动命令,通过参数 -c 指定nginx 配置文件的路径(经测试,这里不指定配置文件也是可以的);第三步再检验重新启动命令是否报错。

[root@iZ2ze4ef9xk9hkxafq58d9Z ~]# pkill -9 nginx
[root@iZ2ze4ef9xk9hkxafq58d9Z ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[root@iZ2ze4ef9xk9hkxafq58d9Z ~]# /usr/local/nginx/sbin/nginx -s reload

       虽然两个方案都能解决问题,但有些浮于表面,为什么之前的好好的文件会缺失不见了呢?

       经过笔者测试,在控制台执行命令:'/usr/local/nginx/sbin/nginx -s stop' 或者 '/usr/local/nginx/sbin/nginx -s quit' 成功退出nginx后,'/usr/local/nginx/logs/nginx.pid' 文件就会自动被清理掉。然后继续执行重启命令:/usr/local/nginx/sbin/nginx -s reload,就会报找不到pid文件的错误: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)。现在接着执行正常的启动命令:/usr/local/nginx/sbin/nginx 后,又发现一个新的PID文件被创建了,所以此时再次执行nginx -s reload就不会提示错误了。根据上面的测试,现在可以推断,在重启系统的过程中,nginx退出同时也清理了pid文件,所以在系统重启完成后,直接执行nginx reload命令就会因为找不到pid文件报错了。

       报错背后的原因找到了。但是PID文件到底有什么作用呢?这个文件主要的作用是为了防止用户同时启动多个nginx(其他PID文件也是相同的道理)。那nginx在启动时怎么知道已经有正在运行的Nginx了呢?每一个Nginx都是一个进程,每个进程都有一个全局唯一的id号,叫做pid。进程无法检测其他进程的,那么在启动nginx时也就不知道当前有没有nginx服务。为了能进行沟通,必须要有一个东西来传递信息,这个东西就是pid文件,里面保存的是进程的id值。

       当Nginx启动时,会先检测有没有nginx.pid文件,如果没有则创建一个,并把自身的pid写进去。如果检测到已经有了nginx.pid文件,但是nginx检测到并没有哪个进程的id和该文件中id值相同,那么pid指向的进程不存在,nginx会正常启动,并把本次启动的pid写入nginx.pid文件中,反之,如果检测到有nginx.pid文件,同时该pid指向的进程存在,则说明nginx服务已经存在,那么本次启动nginx服务会报错。

最后附上 nginx 启动和退出的命令:

//查看nginx是否已经启动
ps ajx|grep nginx
//启动
/usr/local/nginx/sbin/nginx
//重启
/usr/local/nginx/sbin/nginx -s reload
//退出
/usr/local/nginx/sbin/nginx -s quit
//退出
/usr/local/nginx/sbin/nginx -s stop

quit 与 stop 两种退出方式的区别:

Quit is a graceful shutdown. Nginx finishes serving the open connections before shutdown

Quit 是一个优雅的关闭方式,Nginx在退出前完成已经接受的连接请求。

Stop is a quick shutdown where is terminates in between serving the connection

Stop 是快速关闭,不管有没有正在处理的请求。

参考文章:

CommandLine | NGINX

pid文件是什么_逍遥避世者的博客-程序员宅基地_pid文件

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/crazestone0614/article/details/126632143

智能推荐

Python(35):Python3 通过https上传文件和下载文件_python3 文件上传下载-程序员宅基地

文章浏览阅读1.3k次,点赞29次,收藏8次。Python(35):Python3 通过https上传文件和下载文件_python3 文件上传下载

手机远程唤醒 android,手机微信实现网络唤醒电脑(WOL),远程开机,WakeOnLan – 全栈笔记...-程序员宅基地

文章浏览阅读5.1k次。一、需求分析我的电脑一般都是24小时候开机的,方便远程操作。但是这样,一是比较浪费电,二是对电脑硬件也或多或少有些影响。所以就需要远程开机。目前远程开机有很多种方式:1、智能插线板,可以远程控制插板的通电和断电,并在BIOS中设置来电开机,实现远程开机2、通过一些硬件,插到机箱电源跳线上来实现3、利用大部分电脑都支持的WakeOnLan技术来实现开机,只是配置过程有不少坑,相对比较麻烦。如果利用W..._wol安卓远程唤醒软件

VUE基础知识学习,零基础安装node和淘宝镜像 operation not permitted, mkdir ‘D:\nodejs\node_global‘解决方法_operation not permitted, mkdir 'd:\nodejs\node_glo-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏2次。@VUE基础知识学习,基础安装node和淘宝镜像 operation not permitted, mkdir 'D:\nodejs\node_global’解决方法在官网上搜索node.js安装下载成功之后在本地进行安装,记得一定要去搜一下安装教程,因为有些步骤需要修改正常安装之后没有什么问题。检验npm版本(operation not permitted, mkdir 'D:\nodejs\node_global’解决方法)在这里我遇到了一个问题:发现报错,之后我就去百度上搜索了一下这个问_operation not permitted, mkdir 'd:\nodejs\node_global

C语言strtoul函数简介-字符串转无符号长整形_strtoul(argc[2], 0, 16);-程序员宅基地

文章浏览阅读224次。请查看这位大牛的文章,写得太好了,牛皮plus plus.......https://blog.csdn.net/qq_37858386/article/details/78458401_strtoul(argc[2], 0, 16);

7本计算机圣经_计算机程序设计艺术多少本-程序员宅基地

文章浏览阅读7k次,点赞3次,收藏14次。1、《计算机程序设计艺术(第1卷)》《计算机程序设计艺术》系列是公认的计算机科学领域经典之作,深入阐述了程序设计理论,对计算机领域的发展有着极为深远的影响。一共有3卷,第 1 卷,讲解基本算法;第2卷,全面讲解了半数值算法,分“随机数”和“算术”两章;第3卷,全面讲述了排序和查找算法。豆瓣书评:@Palmer:这也算是需要 一辈子用心来读 的一本书吧!~@P..._计算机程序设计艺术多少本

Python Matplotlib画图-程序员宅基地

文章浏览阅读101次。本次学习内容主要涉及利用一些方法如concat方法进行数据合并以及利用groupby进行分组统计,关于concat等合并方法在《利用Python进行数据分析(第二版)》中已做详细说明,其中的学习注释便不再搬运到此处,至于groupby函数的基本使用,与SQL语句中的groupby类似,不再赘述。本次博文仅贴写一些代码。## 导入基本库import pandas as pdimport numpy as np## 数据加载text = pd.read_csv("data/train-left-

随便推点

Android自定义 edittext,Android 自定义ClearEditTextView-程序员宅基地

文章浏览阅读161次。ClearEditTextView通过扩展EditText,添加了右边清除按钮、输入数据不合法时可左右抖动的功能。效果如下:模拟登录整体的实现代码如下:public class ClearEditTextView extends EditText implements View.OnFocusChangeListener, TextWatcher {//右边的删除按钮private Drawabl..._android edittext clear

小程序与H5如何互相跳转_uni小程序跳转到h5链接方法-程序员宅基地

文章浏览阅读1.1k次。由于小程序官方没有提供外部H5网页直接跳转到小程序的api,所以目前只支持小程序内嵌H5,并且只有内嵌的H5才能跳回小程序小程序跳转H5需要用到小程序的web-view,官方文档链接web-view是承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用。写法如下:<view class="page-body"> <web-vi..._uni小程序跳转到h5链接方法

程序员的职业成长之路?从初级到高级的技能提升之路-程序员宅基地

文章浏览阅读153次。程序员的职业成长之路?从初级到高级的技能提升之路

Winform中使用FastReport的PictureObject时通过代码设置图片源并使Image图片旋转90度_fastreport 图片旋转-程序员宅基地

文章浏览阅读731次。场景FastReport安装包下载、安装、去除使用限制以及工具箱中添加控件:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100893794Winform中使用FastReport实现简单的自定义PDF导出:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det..._fastreport 图片旋转

原生js实现移动站点头部搜索栏背景色透明度变化,倒计时,轮播图_js标题滚动实现背景图片由透明变实色怎么弄-程序员宅基地

文章浏览阅读1k次。window.onload = function() { searchRgba(); secondKill(); bannerAutoPlay();} //封装首页头部搜索栏在页面向下滚动时,背景颜色从透明,慢慢变深的效果,在超过轮播图时,背景透明度为0.85不变。 function searchRgba() { var topSearch = docu..._js标题滚动实现背景图片由透明变实色怎么弄

Cesium 自定义Primitive - 绘制多边形_cesium 画空间多边形-程序员宅基地

文章浏览阅读689次,点赞10次,收藏9次。利用Cesium自定义Primitive渲染多边形,并实现实时绘制多边形_cesium 画空间多边形