谁掳走了 nginx.pid 文件?
1、重载配置
执行 nginx -s reload 命令,报错:找不到 nginx.pid 文件,无法打开。曾经屡试不爽的命令,此时,竟然失灵了? 刚开始,我一头雾水,有点丈二和尚摸不着头脑……
[root@127-0-0-1 nginx]# nginx -s reload
nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
[root@127-0-0-1 nginx]
问题一:为什么会报错?
答案: reload命令需要通过nginx.pid获取进程号,会去找/var/run.nginx.pid文件 ,如果不存在,就报错了。
2、进程文件
问题一:有关 pid(进程) 的配置在哪里?
[root@127-0-0-1 nginx]# vim nginx.conf user king;
worker_processes 4; error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
答案:在 nginx.conf 文件中的 pid 参数。显然nginx.pid 文件,就应该存在 /var/run/ 目录下。
问题二:nginx.pid 的生存周期?
答案: 一般情况,重启nginx,就会在/var/run/下生成一个nginx.pid文件。关闭nginx 或 kill nignx的主进程后,nginx.pid就会消失……
[root@127-0-0-1 run]# cd /var/run
[root@127-0-0-1 run]# find -name nginx.pid
[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 主进程号是多少?怎么查?
[root@127-0-0-1 run]# ps -ef|grep nginx
king 11183 12666 0 14:45 ? 00:00:00 nginx: worker process
king 11184 12666 0 14:45 ? 00:00:00 nginx: worker process
king 11185 12666 0 14:45 ? 00:00:00 nginx: worker process
king 11186 12666 0 14:45 ? 00:00:00 nginx: worker process
root 11315 11042 0 15:43 pts/0 00:00:00 grep --color=auto nginx
root 12666 1 0 Jun14 ? 00:00:00 nginx: master process nginx
[root@127-0-0-1 run]#
答案:nginx 主进程(master process)号:12666
[root@127-0-0-1 run]# touch nginx.pid
[root@127-0-0-1 run]# echo "12666" > nginx.pid
[root@127-0-0-1 run]# cat nginx.pid
12666
[root@127-0-0-1 run]#
执行命令:nignx -s relaod 不报错了,问题解决了,喜悦心情油然而生……
[root@127-0-0-1 nginx]# nginx -s reload
[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 文件
[root@127-0-0-1 nginx]# cd /var/run
[root@127-0-0-1 run]# find -name nginx.pid
./nginx.pid
[root@127-0-0-1 run]#
步骤四:重载配置
执行命令:nginx -s reload ,不报错,问题解决了……
5、一顿瞎操作
想法一:进程文件写入一个不存在的进程号,重载配置会怎么样?
[root@127-0-0-1 run]# echo "8888"> nginx.pid
[root@127-0-0-1 run]# cat nginx.pid
8888
[root@127-0-0-1 run]# nginx -s reload
nginx: [alert] kill(8888, 1) failed (3: No such process)
[root@127-0-0-1 run]#
想法二:不杀进程,直接重启 nginx 会报错么?
[root@127-0-0-1 run]# nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[root@127-0-0-1 run]#
报错:80端口,被占用。不是别人,是自己(nginx)……
想法三:写错配置,会有什么影响?
[root@127-0-0-1 conf.d]# cat app.conf
server {
listen 80; king #wrong location
server_name 0.0.0.0:80;
首先测试配置,然后重载
[root@127-0-0-1 conf.d]# nginx -t
nginx: [emerg] unknown directive "king" in /etc/nginx/conf.d/HKIN-CRS.conf:3
nginx: configuration file /etc/nginx/nginx.conf test failed
[root@127-0-0-1 conf.d]# nginx -s reload
nginx: [emerg] unknown directive "king" in /etc/nginx/conf.d/HKIN-CRS.conf:3
[root@127-0-0-1 conf.d]#
谁掳走了 nginx.pid 文件?的更多相关文章
- 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 ...
- nginx 启动报错找不到nginx.pid文件
这个问题的出现应该是系统找不到nginx的配置文件nginx.conf,所以,我们要告诉系统配置文件的位置:' --- 使用nginx -c /usr/local/nginx/conf/nginx.c ...
- nginx重启报找不到nginx.pid的解决方法
nginx被停止(nginx -s stop)或者直接杀掉了进程(kill -9 nginx的进程号)后,调用命令(nginx -s reload 或者 nginx -s reopen)会报错:无法找 ...
- 关于nginx.pid丢失的解决办法
在停掉nginx的过程中突然出现如下的提示:
- 解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid
重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr ...
- linux之pid文件
在命令行中经常看到*.pid文件 其实这些文件是在启动进程的时候系统给这个进程的master进程分配的进程号 比如/usr/local/nginx/logs/nginx.pid文件 打开这个文件会发现 ...
- 解决nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误
重新启动服务器,访问web服务发现无法浏览,登陆服务器之 后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr ...
- 解决linux重启后无法开启nginx问题“var/run/nginx/nginx.pid" no such file or directory问题
起因:每次重启虚拟机后,var/run/nginx/目录都会被删除,所以无法在这个目录创建nginx.pid文件, 可以自己创建var/run/nginx/目录,然后可以运行,但治标不治本,下次虚拟机 ...
- 重启nginx后丢失nginx.pid的解决方法
一,nginx的停止操作 停止操作是通过向nginx进程发送信号来实现的. 步骤1:查询nginx主进程号 复制代码 代码如下: ps -ef | grep nginx 在进程列表里 面找master ...
随机推荐
- 常用ARM指令
常用ARM指令1:数据处理指令 mov mvn MOV(MOVE)指令可完成从另一个寄存器.被移位的寄存器或将一个立即数加载到目的寄存器 MOV R0,R1;R1的值传到R0 MOV R3,#3 ...
- 深入理解java:2.3.6. 并发编程concurrent包 之管理类---线程池
我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁 ...
- 使用Spring Initializr初始化SpringBoot项目
虽然SpringBoot CLI消除了不少设置工作,但如果你更倾向于传统的Java项目结构,那你应该看看Spring Initializr. Spring Initializr从本质上来说就是一个we ...
- MVC学习途径
博客园专题:http://kb.cnblogs.com/zt/mvc/ MVC源码:http://www.codeplex.com/site/search?projectSearchText=mvc ...
- Linux c实现一个tcp文件服务器和客户端
总体需求:编写tcp文件服务器和客户端.客户端可以上传和下载文件. ================================================ 分解需求 客户端功能描述: 1)要 ...
- 红帽学习笔记[RHCSA] 第二周
目录 红帽学习笔记[RHCSA]第二周 环境 第七课[网络配置相关] 在Vmware中添加网卡 将网卡添加到虚拟机上 关于网卡命名规则 配置网络 网络配置命令总结 更改hostname 关于SSH的一 ...
- Qt - 获取本机网络信息
目的: 获取本机的主机名.IP地址.硬件地址等网络信息. 工具: 使用Qt提供的网络模块QtNetwork(pro文件里面加network): 使用Qt提供的类QHostInfo.QNetworkIn ...
- laravel5.5学习2-路由系统
一.初识路由 路由系统是所有 PHP 框架的核心,路由承载的是 URL 到代码片段的映射,不同的框架所附带的路由系统是这个框架本质最真实的写照,一丝不挂,一览无余.Laravel 路由中文文档:htt ...
- js 判断图片是否存在
有的时候 虽然图片的路径是正确的 但是有可能由于某些原因 导致图裂了 或者网络加载失败 那这样的应该怎么判断呢? 如下: function isHasImg(pathImg){ var Img ...
- 自动内存管理机制之java内存区域与内存溢出异常
一.运行时数据区域 java虚拟机所管理的内存会包括下面的几个部分: 1.程序计数器:是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器.一般情况下,字节码解释器工作的时候就是通过改变 ...