Как я могу узнать, какие сеансы Screen все еще выполняют процесс PHP из командной строки? - PullRequest
1 голос
/ 12 июля 2011

У меня около 25 сеансов экрана, на которых выполняются сценарии PHP.

Как я могу сказать, какие из них все еще работают с процессом PHP, запущенным из этого сеанса экрана, без необходимости возобновления каждого экрана? Могу ли я получить доступ к этой информации из командной строки со встроенной функциональностью экрана или Linux, или мне нужно написать сценарии, чтобы справиться с этим?

Я запускал сеансы экрана из командной строки и выполнял сценарии PHP таким же образом.

Ответы [ 2 ]

3 голосов
/ 12 июля 2011

Если память мне не изменяет, сеанс экрана (если он запущен командой, я думаю, это -x) убьет себя (экран закроется), когда программа завершит работу, так что вы можете просто проанализировать screen -list и посмотрите, все ли еще там экран (с назначенным вами именем сеанса).

В качестве альтернативы (и то, что я хотел бы сделать), вы могли бы добавить бегущую строку в таблицу, когда скрипт запускается на экране (с такой информацией, как то, что он делает, ожидаемое время завершения, экран, на котором он запущен и т. Д.). Затем просто сделайте на экране удаление строки из базы данных, когда она завершится, и у вас будет хорошее представление обо всем, что происходит, и о том, где это происходит.

Вы можете даже ограничить количество экранов и запустить программу администрирования в фоновом режиме для назначения заданий экранам (проверка базы данных на наличие открытых экранов).

1 голос
/ 12 июля 2011

Лично я бы запустил cronjob или скрипт, который будет ps auxw | grep screen, а затем перебрал бы каждую строку, используя awk и любой другой приятный инструмент, чтобы увидеть, что в данный момент выполняется на этом tty, и время простоя этого tty.... скорее всего, если PHP-скрипт завершил работу, он покажет, что на этом tty ничего не работает, и вы можете убить этот экран или даже просто tty ...

...