我需要编写脚本来显示其PID作为参数给出的进程的所有曾孙的PID。
以下脚本显示其PID作为参数但我需要曾孙的进程的孙代。
#!/bin/env bash
display_cpid() {
local depth=$1 pid=$2 child_pid
(( ++depth ))
while IFS= read -r child_pid; do
if (( depth < 2 )); then
display_cpid "$depth" "$child_pid"
else
echo "$child_pid"
fi
done < <(pgrep -P "$pid" | xargs)
}
display_cpid 0 "$1"
我希望脚本显示曾孙,但是显示孙代。
答案 0 :(得分:0)
条件“深度<2”控制要打印的过程ID的“深度”。考虑将“ 2”更改为“ 3”以打印所选进程的曾孙。
旁注:该脚本无法在Mint-19下执行,请考虑修改版本:
#!/bin/bash
display_cpid() {
local depth=$1 pid=$2 child_pid
(( ++depth ))
pgrep -P "$pid" | while read -r child_pid; do
if (( depth < 3 )); then
display_cpid "$depth" "$child_pid"
else
echo "$child_pid"
fi
done
}
display_cpid 0 "$1"