【问题标题】:I lost nginx.pid,it disappeared我丢失了 nginx.pid,它消失了
【发布时间】:2016-07-30 18:12:22
【问题描述】:

这是我nginx.conf的一部分:

pid        /www/nginx0836/nginx.pid;

当我重新启动 nginx 时,几秒钟后我运行 ls /www/nginx0836 并列出了 nginx.pid。 但几秒钟后,再次运行ls /www/nginx0836nginx.pid 没有列出。 为什么? 顺便说一句,nginx服务器运行良好,当我运行时

ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'

然后我可以看到 nginx pid。

【问题讨论】:

  • 我在使用 nginx/1.0.9 的 Centos Box 上遇到了完全相同的问题。
  • 你真的在使用 /www/nginx0836/nginx.pid,还是它实际上在 /var 下的某个地方? CentOS 每隔一段时间“有用地”清理 /var 下的一些目录(想到 /var/run),这可能就是你的问题。
  • 尝试在已启动的 NGinx 进程上运行 strace。您可以将 strace 日志输出到例如/tmp 并在之后查看 Nginx 发生了什么(如果这实际上来自 nginx)。如果没有,那么你有来自外部的东西篡改了你的 pid 文件。
  • 缺少 pid 文件不会影响正在运行的服务器,但是如果您“停止它”或“在一个已经运行的情况下启动 nginx”,您可能会遇到问题。顺便说一句,为什么不把pid文件放在/run上,可能是在RAM上呢?
  • 首先,更改文件位置不会影响在 sysV 脚本中创建和管理此 pidfile 的系统列表,例如 CentOS (RHEL)。你能展示一下你是如何启动和重启 nginx 的吗?你能指定你的操作系统吗?

标签: nginx


【解决方案1】:

尝试使用 incrond 监视文件夹并使用 $# $@ 记录该目录上的任何更改。 可能你会看到类似 puppet 或 rsync 删除 pid 文件。

/www/nginx0836 IN_DELETE echo "$# $@"

它将记录目录上的任何删除事件

比审计更简单...

对不起英语不好

【讨论】:

    【解决方案2】:

    尝试nginx的默认配置,你会发现类似的问题here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-18
      • 2016-06-24
      • 2017-02-23
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多