有没有办法找到程序子项的pid?
例如,我正在使用系统程序启动pppoe
连接:
pon dsl-provider
程序将在建立连接后退出,并生成连接所需的pppd
:
ps wx | grep pppd
882 ? S 0:01 /usr/sbin/pppd call dsl-provider
问题是(直到现在我一直这样做)我不想在 ps 列表中 grep,我想要一个确切的答案,而且在许多情况下我需要这个(以上只是一个例子)。我该怎么做?
尝试使用 -p
选项pstree
,以显示进程的进程树及其附加了 pid 的子进程:
$ pstree -p `pgrep pppd`
你可以
试试这个
# 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
我会使用ps --ppid ORIGINAL_PROGRAMS_PID
尽管如果原始程序退出,它可能无法正常工作。