今天因为阿里云的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 是快速关闭,不管有没有正在处理的请求。
参考文章:
文章浏览阅读1.3k次,点赞29次,收藏8次。Python(35):Python3 通过https上传文件和下载文件_python3 文件上传下载
文章浏览阅读5.1k次。一、需求分析我的电脑一般都是24小时候开机的,方便远程操作。但是这样,一是比较浪费电,二是对电脑硬件也或多或少有些影响。所以就需要远程开机。目前远程开机有很多种方式:1、智能插线板,可以远程控制插板的通电和断电,并在BIOS中设置来电开机,实现远程开机2、通过一些硬件,插到机箱电源跳线上来实现3、利用大部分电脑都支持的WakeOnLan技术来实现开机,只是配置过程有不少坑,相对比较麻烦。如果利用W..._wol安卓远程唤醒软件
文章浏览阅读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
文章浏览阅读224次。请查看这位大牛的文章,写得太好了,牛皮plus plus.......https://blog.csdn.net/qq_37858386/article/details/78458401_strtoul(argc[2], 0, 16);
文章浏览阅读7k次,点赞3次,收藏14次。1、《计算机程序设计艺术(第1卷)》《计算机程序设计艺术》系列是公认的计算机科学领域经典之作,深入阐述了程序设计理论,对计算机领域的发展有着极为深远的影响。一共有3卷,第 1 卷,讲解基本算法;第2卷,全面讲解了半数值算法,分“随机数”和“算术”两章;第3卷,全面讲述了排序和查找算法。豆瓣书评:@Palmer:这也算是需要 一辈子用心来读 的一本书吧!~@P..._计算机程序设计艺术多少本
文章浏览阅读101次。本次学习内容主要涉及利用一些方法如concat方法进行数据合并以及利用groupby进行分组统计,关于concat等合并方法在《利用Python进行数据分析(第二版)》中已做详细说明,其中的学习注释便不再搬运到此处,至于groupby函数的基本使用,与SQL语句中的groupby类似,不再赘述。本次博文仅贴写一些代码。## 导入基本库import pandas as pdimport numpy as np## 数据加载text = pd.read_csv("data/train-left-
文章浏览阅读161次。ClearEditTextView通过扩展EditText,添加了右边清除按钮、输入数据不合法时可左右抖动的功能。效果如下:模拟登录整体的实现代码如下:public class ClearEditTextView extends EditText implements View.OnFocusChangeListener, TextWatcher {//右边的删除按钮private Drawabl..._android edittext clear
文章浏览阅读1.1k次。由于小程序官方没有提供外部H5网页直接跳转到小程序的api,所以目前只支持小程序内嵌H5,并且只有内嵌的H5才能跳回小程序小程序跳转H5需要用到小程序的web-view,官方文档链接web-view是承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用。写法如下:<view class="page-body"> <web-vi..._uni小程序跳转到h5链接方法
文章浏览阅读153次。程序员的职业成长之路?从初级到高级的技能提升之路
文章浏览阅读731次。场景FastReport安装包下载、安装、去除使用限制以及工具箱中添加控件:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100893794Winform中使用FastReport实现简单的自定义PDF导出:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det..._fastreport 图片旋转
文章浏览阅读1k次。window.onload = function() { searchRgba(); secondKill(); bannerAutoPlay();} //封装首页头部搜索栏在页面向下滚动时,背景颜色从透明,慢慢变深的效果,在超过轮播图时,背景透明度为0.85不变。 function searchRgba() { var topSearch = docu..._js标题滚动实现背景图片由透明变实色怎么弄
文章浏览阅读689次,点赞10次,收藏9次。利用Cesium自定义Primitive渲染多边形,并实现实时绘制多边形_cesium 画空间多边形