当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的解决方法相关推荐

  1. 关于GHOST时提示找不到GHOSTERR.TXT的解决方法

    最近电脑软硬件应用网电脑门诊的读者来信询问,在使用GHOST恢复系统盘时,操作过程中GHOST提示:找不到GHOSTERR.TXT文件,导致恢复中断.然后站长到百度/google搜索了下,发现很多类似 ...

  2. MultipartFile.transferTo(dest) 报找不到文件错误以及解决方法

    MultipartFile.transferTo(dest) 报找不到文件 今天使用transferTo这个方法进行上传文件的使用发现了一些路径的一些问题,查找了一下记录问题所在 前端上传网页,使用的 ...

  3. 运行java提示找不到符号_运行java代码时出现找不到符号错误怎么解决

    运行java代码时出现找不到符号错误怎么解决 发布时间:2020-06-23 11:37:00 来源:亿速云 阅读:113 作者:Leah 运行java代码时出现找不到符号错误怎么解决?针对这个问题, ...

  4. 在 ubuntu 20.04 LTS 上安装 ROS2 执行 rosdep update 命令时出现的问题的解决办法

    在 ubuntu 20.04 LTS 上安装 ROS2 执行 rosdep update 命令时出现的问题的解决办法 1.sudo rosdep init 在执行 sudo rosdep init 命 ...

  5. linux中nginx重启命令

    linux中nginx重启命令 解决方法: 重启前可以通过这个命令检查配置文件修改是否正确:/usr/sbin/nginx  -t 例如: [root@iZ23tprq0piZ ~]# /usr/sb ...

  6. ceph-deploy install时,远端节点在执行apt-get update命令时失败

    2019独角兽企业重金招聘Python工程师标准>>> 环境 OS:Ubuntu 16.04 背景 使用ceph-deploy部署Ceph集群,调用ceph-deploy insta ...

  7. linux下的nginx重启命令

    linux下的nginx重启命令常见以下2种: systemctl restart nginx #重启nginx centos7 service nginx restart #重启nginx cent ...

  8. linux nginx 重启命令

    linux nginx 重启命令 转自:http://www.cnblogs.com/benio/archive/2010/07/27/1786206.html 源码安装nginx就面临这样的麻烦,不 ...

  9. 执行git commit命令时提示Please tell me who you are.

    问题:执行git commit命令时提示"Please tell me who you are." 猜测是太久没使用了,它需要验证是谁在用, 解决方案 在git界面输入以下指令. ...

最新文章

  1. 巩固好基础,才能学好Linux
  2. 【JavaScript】document对象属性
  3. linux 防火墙开启1521端口,linux防火墙开放1521端口
  4. 为什么应该用record来定义DTO
  5. c语言getchar_二级C语言试题刷题录
  6. python打印一个对象的所有属性_python打印出所有的对象/模块的属性代码详解
  7. Nacos系列:Nacos的三种部署模式 1
  8. checkbox click和change事件
  9. 在unity中生成螺旋线的效果
  10. Linux下添加删除查看用户操作
  11. 中兴盒子B860AV2.1-A-B-M-U,通刷,线刷刷机固件
  12. 如何找mysql my.cnf_mysql 查找 my.cnf位置
  13. 计算机群等级,腾讯客服-群成员活跃等级规则
  14. IOS 地图导航(其中包括苹果地图、百度地图、高德地图、谷歌地图)
  15. 【论文阅读笔记】BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translati
  16. WEB 请求处理二:Nginx 请求 反向代理
  17. 【Lintcode】444. Graph Valid Tree II
  18. 孩子学python_【二孩家庭要注意什么】二孩家庭要怎么教育_二孩家庭的孩子最好间隔几岁 - 妈妈网百科...
  19. 国科大港中文提出带视觉语言验证和迭代推理的Visual Grounding框架,性能SOTA,代码已开源!(CVPR2022)...
  20. 拯救非洲的粮食危机,机器学习做了这些!

热门文章

  1. 【附源码】计算机毕业设计SSM网上开发商售楼及管理信息系统
  2. objective-c 动画 花瓣飘落
  3. 服装跟单管理系统,教你怎么灵活把控每一笔订单
  4. 深度无盘服务器网卡,无盘网吧网卡参数设置建议
  5. el-table动态渲染表格列el-table-column且里边嵌套el-popover弹出框语法
  6. 原子化,元服务,卡片设计指南
  7. Leetcode Hot100不熟练题目 72. 编辑距离
  8. 公众号主、微商使用抽奖助手作为吸粉转化工具背后的产品逻辑
  9. FRU 121SS080C/ASM BAHL00L6S
  10. 通俗易懂,简单理解死锁的四个条件