# 恰逢发版日把公司 nginx 搞崩
- 想起前两个星期跟部门老大聊天,被指派了一个任务,看看能不能避免 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 进程
← 猜猜 3w 钻石能在掘金抽到啥 家具 →