【发布时间】:2016-07-30 18:12:22
【问题描述】:
这是我nginx.conf的一部分:
pid /www/nginx0836/nginx.pid;
当我重新启动 nginx 时,几秒钟后我运行 ls /www/nginx0836 并列出了 nginx.pid。
但几秒钟后,再次运行ls /www/nginx0836,nginx.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