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

Это правильно, что

  • pstree выведет все процессы-потомки данного процесса

  • pstree -s выведет все процессы-потомки и процессы предков данного процесса

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

Благодарю.

Вы всегда можете пройтись по дереву предков вручную, используя 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 -vp="$pid" ' { pid = $1; ppid[pid] = $2 sub(/([[:space:]]*[[:digit:]]+){2}[[:space:]]*/, "") name[pid] = $0 } END { while (p) { print p, name[p] p = ppid[p] } }' 

Вы можете попробовать следующее, я нашел это на странице руководства Linux : -h Это подсвечивает текущий процесс и его предков. -n Это будет сортировать процессы с одним и тем же предком по PID, а не по имени.