我需要编写脚本来显示其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"


我希望脚本显示曾孙,但显示孙代。

最佳答案

条件“深度
旁注:该脚本无法在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"

关于linux - 如何从Bash脚本中列出目标PID的曾孙PID?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58002440/

10-11 09:06