为什么这个过程拒绝退出?

我有一个cron作业,运行一个执行php脚本的shell脚本。 它每天运行,发送一些电子邮件,并写入到标准输出(它被redirect到shell脚本中的日志文件)。

看起来好像这个过程已经完成了,但是现在还没有退出(或者任何正确的术语!)。

$ ps -ejH ... 10756 10756 10756 ? 00:00:00 sh 10760 10756 10756 ? 00:00:00 automail.sh 10766 10756 10756 ? 00:03:57 php ... 

ID为10766进程已经消耗了不到4分钟的CPU时间。 从互动顶级会议,我得到以下内容:

 10766 root 20 0 40640 6024 4 S 0.0 0.2 3:57.48 php 

自从我看了这百分之一百没有改变。 所以我的结论是,它几乎没有什么,最重要的。

 $ ls -ld /proc/10766/ dr-xr-xr-x 7 root root 0 2016-03-09 08:55 /proc/10766/ 

告诉我已经有一段时间了, 服务器时间现在是:

 $ date Wed Mar 9 11:08:29 GMT 2016 

php脚本的最后一行写入日志文件,该行出现在日志文件中。 php脚本的执行是shell脚本中的最后一件事情。

我如何去诊断为什么这个过程没有退出?

UPDATE

下面是我正在运行的shell脚本的编辑版本:

 #!/bin/sh DATE=$(date +%Y-%m-%d) PHP=/usr/bin/php SCRIPT=/path/to/script.php LOG=/path/to/log.file.$DATE.log $PHP $SCRIPT >> $LOG 

该过程被列为“睡眠”未完成或僵尸。

 10766 root 20 0 40640 6024 4 S 0.0 0.2 3:57.48 php 

它坚持做某事,因为你说它已经read(4, ...在一个strace输出中,我想说它可能正在等待另一端的套接字连接发送数据,就像一个网站已经放弃了发送数据。

这是一个总猜测。

几乎肯定应该有一个4的文件描述符,如果您尝试使用lsof -p10756可以提供更多的信息,并了解它的function。