执行nginx重启命令时,报找不到nginx.pid的解决方法
当nginx被停止(nginx -s stop)或者直接杀掉了进程(kill -9 nginx的进程号)或者意外重启后,调用命令(nginx -s reload 或 nginx -s reopen)会报错:无法找到 "url/local/logs/nginx.pid"
这句话中,有好几个知识点,也包含了一些错误,错误得把reload或者reopen当做了启动的命令。来依次总结一下:
1.nginx的常用命令
停止:
直接杀nginx进程。 ps aux|grep nginx 查看nginx的主进程号, 调用 kill -9 nginx的进程号来强制停止nginx。(还有 ”kill -quit nginx的进程号” 来从容停止nginx, ”kill -term nginx的进程号”来快速的停止nginx)
调用 nginx -s stop 快速停止nginx
调用 nginx -s quit 完整有序的停止nginx
启动:
进入nginx安装目录/sbin/下执行
nginx 或者 nginx -c 特定位置的nginx.conf (一般默认是 ./nginx -t -c .url/local/nginx/nginx.conf)
重启:
nginx -s reload 平滑的重启。配置重载。
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制等控制。
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
1. Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
2. Nginx启动新的worker进程,采用新的配置文件
3. Nginx将新的请求分配新的worker进程
4. Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
5. 重复上面过程,知道全部旧的worker进程都被关闭掉。
所以,重启之后,master的进程号不变,worker的进程号会改变。
日志分割:
nginx -s reopen 重新打开日志文件。
为什么要切割日志?一般Nginx安装好后有些人会打开日志记录,有些人会关闭日志记录,打开日志记录的人一般都会把架设在Nginx上的所有网站日志都存在同一个文件里(比如我存在access.log日志文件里),
这样日积月累所有网站的访问记录就会把日志文件越积越大,当需要查看日志文件的时候一看就是一大串,不方便查找。现在,如果我把每天的日志文件分割开来用相应的日期标识出来这样就大大方便查找了。
我是建议打开日志记录,日志记录里面存放着很多有用的东西。比如:浏览器名称,可以方便你对网站的排版做出调整;IP地址,如果网站收到攻击,你就可以查到那个IP地址。
Linux下我们可以简单的把日志文件mv走,但是你会发现mv走后新的日志文件没有重新生成,一般linux下用的文件句柄,文件被打开情况下你mv走文件,但是原来操作这个文件的进程还是有这个文件的inode等信息,
原进程还是读写原来的文件,因此简单的mv是无法生效的。
因此建议过程如下
1. mv原文件到新文件目录中,这个时候 nginx还写这个文件(写入新位置文件中了)
2. 调用nginx -s reopen用来打开日志文件,这样nginx会把新日志信息写入这个新的文件中
这样完成了日志的切割工作, 同时切割过程中没有日志的丢失。
测试当前配置文件是否正确: nginx -t
测试指定配置文件是否正确: nginx -t 指定配置文件路径
2.var/run/nginx.pid文件
首先 var/run这个目录是干嘛用的?
此文件夹包含描述系统启动以来系统信息的数据。此文件夹下的文件必须在启动过程初期清除(删除或归零)。程序可以在/var/run下有自己的子文件夹。原先放在/etc下的进程标识(PID)文件必须放
在/var/run里面。PID文件的命名惯例是<program-name>.pid。所以,nginx的PID文件名为/var/run/nginx.pid。
nginx.pid存放的是nginx的master进程的进程号。
3.为什么会报错
nginx被停止时,var/run/nginx.pid被删除了。 而 reopen和 reload命令需要通过nginx.pid获取进程号,会去找var/run.nginx.pid ,如果不存在,就报错了。
4.总结
reopen是在nginx启动的情况给做分割日志用的, reload也是在nginx启动的情况下做平滑重启的,他们都依赖于nginx进程存在的情况下。 并不是字面上启动或打开的意思。
真正的启动命令是: nginx 或者 nginx -c 指定目录的配置文件 nginx.conf。 查看进程存在即表明启动成功,之后再调用reload和reopen就不会报错了。
转载自:https://www.cnblogs.com/happySmily/p/6003579.html
执行nginx重启命令时,报找不到nginx.pid的解决方法相关推荐
- 关于GHOST时提示找不到GHOSTERR.TXT的解决方法
最近电脑软硬件应用网电脑门诊的读者来信询问,在使用GHOST恢复系统盘时,操作过程中GHOST提示:找不到GHOSTERR.TXT文件,导致恢复中断.然后站长到百度/google搜索了下,发现很多类似 ...
- MultipartFile.transferTo(dest) 报找不到文件错误以及解决方法
MultipartFile.transferTo(dest) 报找不到文件 今天使用transferTo这个方法进行上传文件的使用发现了一些路径的一些问题,查找了一下记录问题所在 前端上传网页,使用的 ...
- 运行java提示找不到符号_运行java代码时出现找不到符号错误怎么解决
运行java代码时出现找不到符号错误怎么解决 发布时间:2020-06-23 11:37:00 来源:亿速云 阅读:113 作者:Leah 运行java代码时出现找不到符号错误怎么解决?针对这个问题, ...
- 在 ubuntu 20.04 LTS 上安装 ROS2 执行 rosdep update 命令时出现的问题的解决办法
在 ubuntu 20.04 LTS 上安装 ROS2 执行 rosdep update 命令时出现的问题的解决办法 1.sudo rosdep init 在执行 sudo rosdep init 命 ...
- linux中nginx重启命令
linux中nginx重启命令 解决方法: 重启前可以通过这个命令检查配置文件修改是否正确:/usr/sbin/nginx -t 例如: [root@iZ23tprq0piZ ~]# /usr/sb ...
- ceph-deploy install时,远端节点在执行apt-get update命令时失败
2019独角兽企业重金招聘Python工程师标准>>> 环境 OS:Ubuntu 16.04 背景 使用ceph-deploy部署Ceph集群,调用ceph-deploy insta ...
- linux下的nginx重启命令
linux下的nginx重启命令常见以下2种: systemctl restart nginx #重启nginx centos7 service nginx restart #重启nginx cent ...
- linux nginx 重启命令
linux nginx 重启命令 转自:http://www.cnblogs.com/benio/archive/2010/07/27/1786206.html 源码安装nginx就面临这样的麻烦,不 ...
- 执行git commit命令时提示Please tell me who you are.
问题:执行git commit命令时提示"Please tell me who you are." 猜测是太久没使用了,它需要验证是谁在用, 解决方案 在git界面输入以下指令. ...
最新文章
- 0 到 1 的过往,1 到 10 的未来 | 智源两周年,开启新篇章
- Mongo DB 2.6 需要知道的一些自身限定
- java 判断时间合法_java 中 Date 类型快判断日期是否合法.
- 基于微信的图片放大预览
- linux 全新编译安装,全新linux中通过编译方式安装nginx
- 【企业管理】《管理者实践》读书笔记--管理者及其工作
- oracle24550,ORA-24550 Signal Received Error From Client Based Application
- Java黑皮书课后题第8章:***8.35(最大块)给定一个元素为0或者1的方阵,编写程序,找到一个元素都为1的最大的子方阵。程序提示用户输入矩阵的行数。然后显示最大的子方阵的第一个元素、行数
- leetcode 526. Beautiful Arrangement | 526. 优美的排列(回溯)
- Command Magicks:如何使用控制台处理文件和字符串
- linux:tr的用法
- 【BlackHat】黑帽大会上值得关注的安全工具
- java开发微信提现_java 微信提现至零钱
- java实现socket.io客户端功能
- moodle支持php5.4,moodle中文支持解决方案
- Python爬虫-模拟登入-selenium模块
- Mac 下使用curl解决迅雷不能使用离线下载的问题
- python培训价目表-培训python大概要多少钱?
- R:CSV读取问题Error in read.table(file = file, header = header, sep = sep, quote = quote, : 列的数目比列的名字要多
- 阿里的互联网三高架构是真的牛!腾讯百度根本模仿不来