Linux
根據給定的父/子程序格式化 ps 輸出
給定程序名稱列表,我希望這些父/子程序不會出現在
ps --forest
呼叫的輸出中。這將減少我在跟踪事物時需要查看的流程。
這是一個很難做到的方法:一個
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[@]}" }
對於不支持數組的 shell,請考慮另一種選擇:
#!/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 "$@" }