プロセス名のリストが与えられたら、これらの親/子プロセスが呼び出し出力に表示されないようにしますps --forest
。
これにより、物事を追跡するときに見なければならないプロセスが減ります。
答え1
これは難しい方法です。関数はpgrep
pidを返すために使用されます(-v
プロセス名が与えられた場合は除外())。次に、ps
フォレストのリストを要求する関数を呼び出します。ただ必須PID:
function psexclude {
case $# in
(0)
printf "Usage: psexclude procname1 ...\n" >&2
return 1
;;
(*)
str=$(IFS='|'; printf '%s' "$*")
wanted=( $(pgrep -fv -- "$str") )
;;
esac
ps --forest -p "${wanted[@]}"
}
配列をサポートしていないシェルの場合は、代替を検討してください。
#!/bin/sh
function psexclude {
case $# in
(0)
printf "Usage: psexclude procname1 ...\n" >&2
return 1
;;
(*)
str=$(IFS='|'; printf '%s' "$*")
set -- $(pgrep -fv -- "$str")
;;
esac
ps --forest -p "$@"
}