2010-10-11 95 views
9

这里是我的nginx.conf的一部分:我失去了nginx.pid,就消失

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。

+0

我在使用nginx/1.0.9的Centos Box上有完全相同的问题。 – niwo 2011-12-02 16:05:55

+1

你真的在使用/www/nginx0836/nginx.pid,还是实际上在/ var下的某处? CentOS“有用地”每隔一段时间清理一下/ var下的一些目录(/ var/run想起来),这可能就是你咬人的东西。 – 2012-06-27 21:26:06

+0

尝试在启动的NGinx进程上运行strace。您可以输出strace日志到例如/ tmp,然后继续查看Nginx明智之举(如果这实际上来自nginx)。如果没有,那么你从外面篡改你的PID文件。 – 2013-05-11 22:51:47

回答

1

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

/www/nginx0836 IN_DELETE echo "$# [email protected]" 

它会记录任何删除事件的目录

比审计更简单...

对不起nginx的穷人英语

-2

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