PS: Как я могу рекурсивно получить весь дочерний процесс для данного pid

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

Вывод мог, например, быть похожим

 4378 ?        Ss     0:10 SCREEN
 4897 pts/16   Ss     0:00  \_ -/bin/bash
25667 pts/16   S+     0:00  |   \_ git diff
25669 pts/16   S+     0:00  |       \_ less -FRSX
11118 pts/32   Ss+    0:00  \_ -/bin/bash
11123 pts/32   S+     0:00      \_ vi

Я не мог получить желаемый результат просто с параметрами к ps.

Следующее дает желаемый результат, но кажется немного включенным:

#!/bin/bash

pidtree() {
  echo -n $1 " "
  for _child in $(ps -o pid --no-headers --ppid $1); do
    echo -n $_child `pidtree $_child` " "
  done
}

ps f `pidtree 4378`

У кого-либо есть более легкое решение?

43
задан 30.11.2011, 23:25

0 ответов

Теги

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