1、重载配置

执行 nginx  -s   reload  命令,报错:找不到 nginx.pid 文件,无法打开。曾经屡试不爽的命令,此时,竟然失灵了? 刚开始,我一头雾水,有点丈二和尚摸不着头脑……

  1. [root@127-0-0-1 nginx]# nginx -s reload
  2. nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
  3. [root@127-0-0-1 nginx]

问题一:为什么会报错?

答案: reload命令需要通过nginx.pid获取进程号,会去找/var/run.nginx.pid文件 ,如果不存在,就报错了。

2、进程文件

问题一:有关  pid(进程) 的配置在哪里?

  1. [root@127-0-0-1 nginx]# vim nginx.conf
  2.  
  3. user king;
  4. worker_processes 4;
  5.  
  6. error_log /var/log/nginx/error.log warn;
  7. pid /var/run/nginx.pid;

答案:在 nginx.conf 文件中的 pid 参数。显然nginx.pid 文件,就应该存在 /var/run/ 目录下。

问题二:nginx.pid 的生存周期?

答案: 一般情况,重启nginx,就会在/var/run/下生成一个nginx.pid文件。关闭nginx 或 kill  nignx的主进程后,nginx.pid就会消失……

  1. [root@127-0-0-1 run]# cd /var/run
  2. [root@127-0-0-1 run]# find -name nginx.pid
  3. [root@127-0-0-1 run]#

 奇怪,还真没有 nginx.pid 文件。那么问题就来了,为什么nginx在启动的状态下,nginx.pid竟丢失了? 它去哪了? 还是谁掳走了它?

3、陷入深思

nginx.pid 去哪了?怎么丢失的?

1、误删  rm  -f  nginx.pid

2、恶作剧    被哪个同事给耍了,还是城市套路深,我要回农村……

4、解决方案

1)创建 nginx.pid 文件 —— 不是找不到文件么,我给你创建一个不得了嘛^_^

nginx.pid存放的是nginx的master进程号。

问题一: nginx 主进程号是多少?怎么查?

  1. [root@127-0-0-1 run]# ps -ef|grep nginx
  2. king 11183 12666 0 14:45 ? 00:00:00 nginx: worker process
  3. king 11184 12666 0 14:45 ? 00:00:00 nginx: worker process
  4. king 11185 12666 0 14:45 ? 00:00:00 nginx: worker process
  5. king 11186 12666 0 14:45 ? 00:00:00 nginx: worker process
  6. root 11315 11042 0 15:43 pts/0 00:00:00 grep --color=auto nginx
  7. root 12666 1 0 Jun14 ? 00:00:00 nginx: master process nginx
  8. [root@127-0-0-1 run]#

 答案:nginx 主进程(master process)号:12666

  1. [root@127-0-0-1 run]# touch nginx.pid
  2. [root@127-0-0-1 run]# echo "12666" > nginx.pid
  3. [root@127-0-0-1 run]# cat nginx.pid
  4. 12666
  5. [root@127-0-0-1 run]#

 执行命令:nignx  -s  relaod 不报错了,问题解决了,喜悦心情油然而生……

  1. [root@127-0-0-1 nginx]# nginx -s reload
  2. [root@127-0-0-1 nginx]#

 2)重启nginx —— 重启成功后,会生成一个nginx.pid文件。问题的克星——重启,是一把万能钥匙……

步骤一:杀掉进程

kill  -9  master 和 worker 进程号

步骤二:重启nginx

方法一:nginx

方法二:nginx  -c  指定目录的配置文件    例:nginx  -c  /etc/nginx/nginx.conf

步骤三:查看nginx.pid 文件

  1. [root@127-0-0-1 nginx]# cd /var/run
  2. [root@127-0-0-1 run]# find -name nginx.pid
  3. ./nginx.pid
  4. [root@127-0-0-1 run]#

  步骤四:重载配置

执行命令:nginx -s  reload ,不报错,问题解决了……

5、一顿瞎操作

想法一:进程文件写入一个不存在的进程号,重载配置会怎么样?

  1. [root@127-0-0-1 run]# echo "8888"> nginx.pid
  2. [root@127-0-0-1 run]# cat nginx.pid
  3. 8888
  4. [root@127-0-0-1 run]# nginx -s reload
  5. nginx: [alert] kill(8888, 1) failed (3: No such process)
  6. [root@127-0-0-1 run]#

想法二:不杀进程,直接重启 nginx 会报错么?

  1. [root@127-0-0-1 run]# nginx
  2. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  3. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  4. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  5. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  6. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  7. nginx: [emerg] still could not bind()
  8. [root@127-0-0-1 run]#

报错:80端口,被占用。不是别人,是自己(nginx)……

想法三:写错配置,会有什么影响?

  1. [root@127-0-0-1 conf.d]# cat app.conf
  2. server {
  3. listen 80; king #wrong location
  4. server_name 0.0.0.0:80;

首先测试配置,然后重载

  1. [root@127-0-0-1 conf.d]# nginx -t
  2. nginx: [emerg] unknown directive "king" in /etc/nginx/conf.d/HKIN-CRS.conf:3
  3. nginx: configuration file /etc/nginx/nginx.conf test failed
  4. [root@127-0-0-1 conf.d]# nginx -s reload
  5. nginx: [emerg] unknown directive "king" in /etc/nginx/conf.d/HKIN-CRS.conf:3
  6. [root@127-0-0-1 conf.d]#

  

谁掳走了 nginx.pid 文件?的更多相关文章

  1. Nginx pid文件找不到 nginx: [error] open() "/run/nginx/nginx.pid" failed (2: No such file or directory)

    Nginx pid文件找不到 nginx: [error] open() "/run/nginx/nginx.pid" failed (2: No such file or dir ...

  2. nginx 启动报错找不到nginx.pid文件

    这个问题的出现应该是系统找不到nginx的配置文件nginx.conf,所以,我们要告诉系统配置文件的位置:' --- 使用nginx -c /usr/local/nginx/conf/nginx.c ...

  3. nginx重启报找不到nginx.pid的解决方法

    nginx被停止(nginx -s stop)或者直接杀掉了进程(kill -9 nginx的进程号)后,调用命令(nginx -s reload 或者 nginx -s reopen)会报错:无法找 ...

  4. 关于nginx.pid丢失的解决办法

    在停掉nginx的过程中突然出现如下的提示:

  5. 解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid

    重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr ...

  6. linux之pid文件

    在命令行中经常看到*.pid文件 其实这些文件是在启动进程的时候系统给这个进程的master进程分配的进程号 比如/usr/local/nginx/logs/nginx.pid文件 打开这个文件会发现 ...

  7. 解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误

    重新启动服务器,访问web服务发现无法浏览,登陆服务器之 后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr ...

  8. 解决linux重启后无法开启nginx问题“var/run/nginx/nginx.pid" no such file or directory问题

    起因:每次重启虚拟机后,var/run/nginx/目录都会被删除,所以无法在这个目录创建nginx.pid文件, 可以自己创建var/run/nginx/目录,然后可以运行,但治标不治本,下次虚拟机 ...

  9. 重启nginx后丢失nginx.pid的解决方法

    一,nginx的停止操作 停止操作是通过向nginx进程发送信号来实现的. 步骤1:查询nginx主进程号 复制代码 代码如下: ps -ef | grep nginx 在进程列表里 面找master ...

随机推荐

  1. 【神经网络与深度学习】Caffe部署中的几个train-test-solver-prototxt-deploy等说明

    1:神经网络中,我们通过最小化神经网络来训练网络,所以在训练时最后一层是损失函数层(LOSS), 在测试时我们通过准确率来评价该网络的优劣,因此最后一层是准确率层(ACCURACY). 但是当我们真正 ...

  2. 【VS开发】Caffelib中出现的问题:强制链接静态库所有符号(包括未被使用的)

    C++程序在链接一个静态库时,如果该静态库里的某些方法没有任何地方调用到,最终这些没有被调用到的方法或变量将会被丢弃掉,不会被链接到目标程序中.这样做大大减小生成二进制文件的体积.但是,某些时候,即使 ...

  3. 深入理解java:4.1. 框架编程之Spring MVC

    说到java的mvc框架,struts2和springmvc想必大家都知道, Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高 ...

  4. 【转】应用宝基于Robotium自动化测试

    (转载:http://tmq.qq.com/2016/05/robotium_for_app_test/) 1 背景目的应用宝项目组采用FT(Feature Team)模式,整个项目组分为多个FT,而 ...

  5. C语言作业09

    问题 答案 这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 https://i.cnblogs.com/EditPosts.aspx?opt=1 我在这个课程的目标是 在学好C语言编程的基础 ...

  6. Spring(三)--Spring bean的生命周期

    Spring bean的生命周期 ApplicationContext Bean生命周期流程 1.需要的实体类 ackage com.xdf.bean; import org.springframew ...

  7. py之包和日志

    第一章 包 只要文件夹下含有__init__.py文件就是一个包 回想一下,之前我们没有学习模块的时候将一个整体的功能写入到文件中,为了能够充分的将某个功能进行重用 我们使用了模块,但是慢慢的模块就会 ...

  8. python,pycharm环境安装

    1.1 python3安装四部曲 第一步下载 地址 https://www.python.org/downloads/windows/ 第二步安装 1. 第三步 配置坏境变量 第四步 测试是否完成安装 ...

  9. Typora---markdown

    一级标题 空格 编写内容 有序内容 +Tab 无序内容 -+Tab 代码块 print('hello world!') typora快捷键 标题1==ctrl +1 图片 表格 Ctrl + T 姓名 ...

  10. c#HtmlAgilityPack解析html

    通过HtmlAgilityPack实现对html页面解析HtmlDocument doc = new HtmlDocument(); doc.Load(yourStream); var itemLis ...