Как проверить в bash, действительно ли процесс (или один из его дочерних элементов) что-то делает (CPU / IO)? - PullRequest
1 голос
/ 29 января 2010

На самом деле, я хотел бы иметь какой-то индикатор выполнения. Я хотел бы, чтобы пользователь мог распознавать, когда процесс "зависает".

Обычно я буду использовать его, чтобы показать прогресс ./configure и совершать звонки.

ADDENDUM: мне нужен прогресс, который не использует внешние инструменты. (без бара)

/ proc / pid / stat в порядке, но не решает проблему с возможными дочерними процессами

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

Если вам нужно общее решение, то вам придется делать рекурсивные ps -ppid ... вызовы --- или делать один большой ps вызов, который получает все сразу, и анализировать его самостоятельно, чтобы получить всех потомков. вашего желаемого родительского процесса. (Вы можете обрезать то, на что нужно обратить внимание, сначала получив лидера сеанса или группу процессов вашего родительского процесса, а затем просто сделав ps для процессов с этим лидером сеанса / группой процессов. Если вам повезет, больше нет потребуется обрезка.)

Но если вы имеете дело с ./configure и делаете звонки специально, почему бы вам не направить их вывод во временный файл и просто посмотреть, чтобы он становился длиннее, или когда он был последний раз затронут, или так далее

0 голосов
/ 29 января 2010

dialog имеет индикатор выполнения.

Что касается мониторинга состояния (кроме этапов в вашем коде), вы, вероятно, можете проанализировать /proc/PID/status или вывод ps.

Edit:

Чтобы получить список дочерних процессов, проанализируйте вывод:

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