Tim Asked: 2018-07-28 17:09:17 +0800 CST2018-07-28 17:09:17 +0800 CST 2018-07-28 17:09:17 +0800 CST 如何仅获取给定进程的祖先进程? 772 是否正确 pstree <pid>将输出给定进程的所有后代进程 pstree -s <pid>将输出给定进程的所有后代进程和祖先进程 如何仅获取给定进程的祖先进程? 谢谢。 process pstree 2 个回答 Voted Best Answer Stéphane Chazelas 2018-07-29T00:06:50+08:002018-07-29T00:06:50+08:00 您始终可以使用以下方法手动遍历祖先树ps -o ppid=: #! /bin/bash - pid=${1?Please give a pid} while [ "$pid" -gt 0 ] && read -r ppid name < <(ps -o ppid= -o comm= -p "$pid") do printf '%s\n' "$pid $name" pid=$ppid done 或者避免ps多次运行: #! /bin/sh - pid=${1?Please give a pid} ps -Ao pid= -o ppid= -o comm= | awk -v p="$pid" ' { pid = $1; ppid[pid] = $2 sub(/([[:space:]]*[[:digit:]]+){2}[[:space:]]*/, "") name[pid] = $0 } END { while (p) { print p, name[p] p = ppid[p] } }' Nur 2018-07-28T19:30:22+08:002018-07-28T19:30:22+08:00 您可以尝试以下操作,我在Linux 手册页中找到了它: -h 这会突出显示当前进程及其祖先。-n 这将按 PID 而不是名称对具有相同祖先的进程进行排序。
您始终可以使用以下方法手动遍历祖先树
ps -o ppid=
:或者避免
ps
多次运行:您可以尝试以下操作,我在Linux 手册页中找到了它: -h 这会突出显示当前进程及其祖先。-n 这将按 PID 而不是名称对具有相同祖先的进程进行排序。