我已获得一项任务,以获取进程的子代/孙代的cpu /内存利用率。可以使用top
命令找到。我已经写下了一个脚本,该脚本将获取流程的子代,但是我不确定如何递归地找到该流程的所有子代和大子代。
#!/bin/bash
ID=$PPID
read PID < <(exec ps -o ppid= "$ID")
for _child in $(pgrep -P "$PID"); do
top -c -b -n 1 -p "$_child"
done
我也尝试过使用pstree
,但是我不想跟踪轻量级过程。可以请一些人帮我如何找到这个过程的大孩子。
function list_children {
[[ $2 == --add ]] || LIST=()
local ADD=() __
IFS=$'\n' read -ra ADD -d '' < <(exec pgrep -P "$1")
LIST+=("${ADD[@]}")
for __ in "${ADD[@]}"; do
list_children "$__" --add
done
}
用法示例:
list_children "$PPID"
echo "Children: ${LIST[*]}"
for CHILD in "${LIST[@]}"; do
top -c -b -n 1 -p "$CHILD"
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句