Как я могу проверить процесс Linux, чтобы определить, как / когда процесс умирает / завершается? - PullRequest
0 голосов
/ 01 ноября 2010

У меня есть python irc bot , который я запускаю как root, выполняя /etc/init.d/phenny start.Иногда он умирает, и кажется, что это происходит за одну ночь.

Что я могу сделать, чтобы проверить его и увидеть состояние процесса в текстовом файле?

Ответы [ 5 ]

1 голос
/ 01 ноября 2010

Если вы знаете, что он все еще работает, вы можете pstack его, чтобы увидеть, что он возвращается. Я не уверен, насколько это будет полезно, потому что вы увидите стек вызовов интерпретатора. Вы также можете попробовать strace или ltrace, как кто-то еще упомянул.

Я бы также позаботился о том, чтобы в любой среде, в которой запускается скрипт, вы установили ulimit -c unlimited, чтобы ядро ​​генерировалось в случае, если python полностью сбой.

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

1 голос
/ 01 ноября 2010

Если вас интересует действительно низкоуровневая активность процессов, вы можете запустить интерпретатор python в strace со стандартной ошибкой, перенаправленной в файл.

Если вас интересует толькоИзучая код Python, когда ваш бот вылетает, и у вас есть местоположение в источнике, где происходит сбой, вы можете обернуть это место с помощью try / except и , ворвавшись в отладчик в except clause:

import pdb; pdb.set_trace()

Возможно, вам потребуется запустить своего бота в режиме, не являющемся демоном, чтобы это работало.

0 голосов
/ 15 ноября 2010

Если вам нужно только убедиться, что процесс запущен, вы можете просто запустить скрипт, который проверяет вывод команды

ps ax |grep [p] henny

каждые несколько секунд.Если он пуст, то, очевидно, процесс мертв.

0 голосов
/ 01 ноября 2010

Дешевый способ получить дополнительную информацию о проблеме - начать фенни с

/etc/init.d/phenny start 2>/tmp/phenny.out 1>&2

Когда происходит сбой, проверьте хвост /tmp/phenny.out для трассировки Python.

0 голосов
/ 01 ноября 2010

Вы можете попробовать Python psutils , это то, что я использовал и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...