2012-05-24 4 views
0

Есть ли способ найти pid детей программы?Есть ли способ найти детей детей программы?

К примеру, я начинаю pppoe соединение с помощью системной программы:

pon dsl-provider 

Программа будет выходить после установления соединения и породит pppd необходимое для подключения:

ps wx | grep pppd 
    882 ?  S  0:01 /usr/sbin/pppd call dsl-provider 

Дело в том (Я делал это до сих пор), что я не хочу grep в листинге ps, я хочу получить точный ответ, и мне это нужно во многих случаях (это только пример). Как я могу это сделать?

+0

Один надеюсь, полезный намек, что вы можете использовать в сочетании с обоими ниже ответы: Если вы готовый сделать исходный процесс 'pon dsl-provider &', вы можете получить его PID с '$!'. – ArjunShankar

ответ

0

Вы можете попробовать это

# somehow get the PID of the parent (882 in your case) 
PID=`ps wx | grep pppd | awk '{ print $1; }'` 

# formatted output (includes the parent) 
ps ax --format pid,ppid,command | grep $PID | grep -v grep 
0

Я хотел бы использовать ps --ppid ORIGINAL_PROGRAMS_PID хотя это может не сработать, если исходная программа завершается.

1

Попробуйте pstree с опцией -p, чтобы показать процесс дерева процесса и его потомков с PIDs прилагаемую:

$ pstree -p `pgrep pppd` 
Смежные вопросы