编写一个脚本,该脚本显示该进程的所有孙子的PID(以PID作为参数)。
#!/bin/bash
function display_cpid()
{
child_pids=`pgrep -P $1 | xargs`
for child_pid in $child_pids;
do
echo "$child_pid"
display_cpid $child_pid
done
}
display_cpid $1
那是我的工作。它打印以PID为参数的进程的子进程,但我只想打印孙子进程。
答案 0 :(得分:0)
添加一个“ depth”参数,输入并递归直到其值为2然后打印。如果这还不是您所需要的,那么请编辑您的问题以明确您需要帮助的地方。
#!/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"