nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)

06-01 354阅读

准备重启Nginx, 执行命令:

 
  1. 准备重启nginx
    sbin/nginx -s reload

    结果启动失败,报出了错误:nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)。

    首先看这个错误提示是 nginx.pid 文件缺失导致的错误,搜了一下网上的解决方案:

    方案一:是新建一个nginx.pid文件;

    杀死nginx进程再启动nginx服务发现/usr/local/nginx/logs/nginx.pid文件里面有进程号,就成功了。

    第一个方案 你虽然创建了但是多次重启后nginx.pid文件还是会被删除。

    方案二:

    第一步先Kill nginx;

    第二步是执行启动命令,通过参数 -c 指定nginx 配置文件的路径(经测试,这里不指定配置文件也是可以的);

    第三步再检验重新启动命令是否报错。

    [root@iZ2ze4ef9xk9hkxafq58d9Z ~]# pkill -9 nginx
    [root@iZ2ze4ef9xk9hkxafq58d9Z ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    [root@iZ2ze4ef9xk9hkxafq58d9Z ~]# /usr/local/nginx/sbin/nginx -s reload

    停掉nginx服务再启动发现/usr/local/nginx/logs/nginx.pid文件里面有进程号,就成功了。

虽然两个方案都能解决问题,但有些浮于表面,为什么之前的好好的文件会缺失不见了呢?

经过测试,在控制台执行命令:'/usr/local/nginx/sbin/nginx -s stop' 或者 '/usr/local/nginx/sbin/nginx -s quit' 成功退出nginx后,'/usr/local/nginx/logs/nginx.pid' 文件就会自动被清理掉。然后继续执行重启命令:/usr/local/nginx/sbin/nginx -s reload,就会报找不到pid文件的错误: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)。现在接着执行正常的启动命令:/usr/local/nginx/sbin/nginx 后,又发现一个新的PID文件被创建了,所以此时再次执行nginx -s reload就不会提示错误了。根据上面的测试,现在可以推断,在重启系统的过程中,nginx退出同时也清理了pid文件,所以在系统重启完成后,直接执行nginx reload命令就会因为找不到pid文件报错了。

报错背后的原因找到了。但是PID文件到底有什么作用呢?这个文件主要的作用是为了防止用户同时启动多个nginx(其他PID文件也是相同的道理)。那nginx在启动时怎么知道已经有正在运行的Nginx了呢?每一个Nginx都是一个进程,每个进程都有一个全局唯一的id号,叫做pid。进程无法检测其他进程的,那么在启动nginx时也就不知道当前有没有nginx服务。为了能进行沟通,必须要有一个东西来传递信息,这个东西就是pid文件,里面保存的是进程的id值。

当Nginx启动时,会先检测有没有nginx.pid文件,如果没有则创建一个,并把自身的pid写进去。如果检测到已经有了nginx.pid文件,但是nginx检测到并没有哪个进程的id和该文件中id值相同,那么pid指向的进程不存在,nginx会正常启动,并把本次启动的pid写入nginx.pid文件中,反之,如果检测到有nginx.pid文件,同时该pid指向的进程存在,则说明nginx服务已经存在,那么本次启动nginx服务会报错

nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)
(图片来源网络,侵删)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_54514751/article/details/129403336

nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)
(图片来源网络,侵删)
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)
(图片来源网络,侵删)
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码