Eu tenho um cron job que executa um script de shell que executa um script php. Ele é executado todos os dias, envia alguns e-mails e grava no stdout (que é redirecionado para um arquivo de log no shell script).
Parece que esse processo terminou, hoje, mas não saiu (ou qualquer que seja a terminologia correta!).
$ ps -ejH
...
10756 10756 10756 ? 00:00:00 sh
10760 10756 10756 ? 00:00:00 automail.sh
10766 10756 10756 ? 00:03:57 php
...
O processo com id 10766
consumiu pouco menos de 4 minutos de tempo de CPU. De uma sessão superior interativa, recebo o seguinte:
10766 root 20 0 40640 6024 4 S 0.0 0.2 3:57.48 php
Esses centésimos não mudaram desde que eu olhei para ele. Então, minha conclusão é que está fazendo ... quase nada, no máximo.
$ ls -ld /proc/10766/
dr-xr-xr-x 7 root root 0 2016-03-09 08:55 /proc/10766/
me diz que está acontecendo há algum tempo; a hora do servidor é agora:
$ date
Wed Mar 9 11:08:29 GMT 2016
A última linha do script php grava em um arquivo de log, e essa linha é presente no arquivo de log. A execução do script php é a última coisa no script de shell.
Como faço para diagnosticar por que esse processo não foi encerrado?
UPDATE
Aqui está uma versão editada do script de shell que estou executando:
#!/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