2021.12.7
- 想起前两个星期跟部门老大聊天,被指派了一个任务,看看能不能避免nginx中的nginx.pid文件丢失导致整个nginx崩掉,今天心血来潮就直接把nginx里面pid的指定路径改为
/etc/nginx/log/pid
,然后执执行命令nginx -s reload
,然后就发现nginx直接起不来了... - 然后进一步排查发现nginx并没有完全挂掉...怎么说呢,就是在我修改这个配置之前的nginx服务依然好好的在运行着...
- 这就尴尬了,查了一下端口占用情况,发现80端口确实被nginx霸占着,那就奇怪了既然nginx还在运行为啥我跑nginx的一系列命令都会报pid找不到呢,可是这个文件现在确实存在于目录下,然后另一位同事找来,说nginx挂了,现在有需求要上线,搞得我一下子紧张起来,我这边问题没解决直接影响线上发版啊!于是求助部门老大,一起排查把修改的pid路径恢复,最后直接
killall nginx
把所有的nginx干掉,再重启一遍nginx就可以了。总算是有惊无险~ 顺带提一下nginx pid 这玩意会在nginx
启动时自动创建,nginx被停止时,nginx.pid被删除了。 而nginx
的一系列reload、start、stop
命令需要通过nginx.pid获取进程号,会根据nginx配置下的路径去找 ,如果不存在,就报错了。
顺便放几个本人常用的nginx
命令
nginx -s reload
平滑的重启,配置重载。nginx -s stop
快速停止nginxnginx -s quit
完整有序的停止nginxsystemctl status nginx.service
查看nginx运行状态systemctl start nginx
启动nginxsystemctl restart nginx
重启nginxservice nginx restart
重启nginx(需要进去nginx安装目录)killall nginx
关闭所有nginx进程ps -aux|grep nginx
查看正在运行的nginx进程