有没有办法找到一个程序的孩子的pids?

时间:2012-05-24 12:25:19

标签: bash

有没有办法找到节目中孩子的pid?

例如,我正在使用系统程序启动pppoe连接:

pon dsl-provider

程序将在建立连接后退出,并将产生连接所需的pppd

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

事情是(直到现在我这样做)我不想在ps列表中grep,我想要一个确切的答案,我需要在许多情况下(以上只是一个例子)。我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

使用pstree选项试试-p,以显示流程的流程树及其附加了pids的子项:

$ pstree -p `pgrep pppd`

答案 1 :(得分: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

答案 2 :(得分:0)

我使用ps --ppid ORIGINAL_PROGRAMS_PID虽然如果退出原始程序可能无效。