Почему этот процесс отказывается завершить работу?

У меня есть задание cron, которое запускает сценарий оболочки, который выполняет сценарий php. Он запускается каждый день, отправляет электронное письмо и записывает в stdout (который перенаправляется в файл журнала в сценарии оболочки).

Похоже, что этот процесс сегодня завершился, но не завершился (или как бы там ни было в правильной терминологии). есть!).

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

Процесс с идентификатором 10766 потребляет чуть менее 4 минут процессорного времени. Из интерактивной верхней сессии я получаю следующее:

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 - это последняя вещь в скрипте оболочки.

Как мне диагностировать, почему этот процесс не завершился?

ОБНОВЛЕНИЕ

Вот отредактированная версия скрипта оболочки, который я запускаю :

#!/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
2
задан 9 March 2016 в 14:44
1 ответ

Процесс указан как "спящий" не законченный или зомбированный.

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

Он застрял, делая что-то, учитывая, что вы сказали, что он прочитал (4, ... на выходе в прямом направлении, я бы сказал, что он, вероятно, ждет, когда другой конец гнездового соединения отправит ему данные. Как будто веб-сайт перестал посылать вам данные.

Это полная догадка.

Почти наверняка должен быть файловый дескриптор для 4, который даст больше информации, если вы попробуете lsof -p10756 и посмотрите, что там.

.
4
ответ дан 3 December 2019 в 10:00

Теги

Похожие вопросы