프로세스 이름 목록이 주어지면 이러한 상위/하위 프로세스가 호출 출력에 나타나지 않기를 원합니다 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 "$@"
}