7개의 하위 프로세스를 더 시작하는 bash에서 가상 프로세스를 시작하는 방법

7개의 하위 프로세스를 더 시작하는 bash에서 가상 프로세스를 시작하는 방법

모든 하위 프로세스 정보를 다음 형식으로 기록하는 bash 스크립트를 작성하려고 하는데, 프로세스에 6개 이상의 하위 항목이 있는 경우에만 정보를 기록해야 합니다.

PID PPID 등급
10 9 1(어린이용)
9 8 2(상위를 나타냄)
8 7 3 (조부모용)
Pstree -ps 10 should display:
dummy1---dummy2---dummy3---dummy4---dummy5---dummy6---dummy7

위의 방식으로 가상 프로세스를 어떻게 트리거할 수 있습니까?

솔직히 저는 bash 스크립팅에 대해 아무것도 모르고 제가 할 수 있는 유일한 일은 특정 사용자의 PID를 표시하는 것입니다.

while read -r processId;
do
    echo $processId
done <<< "$(ps -u $USER -o pid)"

각 PID를 반복하여 6개 이상의 하위 항목이 있는지 확인해야 하지만 그 전에 6개의 하위 프로세스를 수동으로 트리거하여 스크립트를 시작하고 테스트하려고 합니다.

답변1

7개의 하위 항목으로 스크립트를 시작하려면 다음과 같이 사용할 수 있습니다.

#!/bin/bash

if [[ "$#" -ne 1 ]]; then
    set -- 7
fi

if [[ "$1" -gt 2 ]]; then
    "$0" "$(($1 - 1))"
else
    sleep 120
fi

혹은 좀 더 간결하게 말하면,

#!/bin/bash

[[ "$#" -ne 1 ]] && set -- 7

[[ $1 -gt 2 ]] && $0 $(($1 - 1)) || sleep 120

인수가 제공되지 않거나 인수가 너무 많이 제공되면 인수를 7로 설정합니다. 그런 다음 인수가 2보다 클 때마다 인수를 줄여 동일한 스크립트를 실행하는 하위 프로세스를 시작합니다. 매개변수가 2에 도달하면 2분간 절전 모드가 실행됩니다. (마지막 스크립트와 sleep합계도 각각 1개로 계산되므로 2개로 제한됩니다.)

$ ./dummy &
$ pstree -p 1800554
dummy(1800554)───dummy(1800561)───dummy(1800563)───dummy(1800566)───dummy(1800567)───dummy(1800570)───sleep(1800572)

매개변수를 변경하여 다른 수의 하위 항목을 요청할 수 있습니다.

$ ./dummy 6 &

이는 각 "세대"에서 여러 자식을 시작하도록 확장될 수 있습니다.

#!/bin/bash

[[ "$#" -ne 2 ]] && set -- 1 7

for (( i = 0; i < $1; i++ )); do
[[ $2 -gt 2 ]] && $0 $1 $(($2 - 1)) || sleep 120 &
done
wait

다음과 같이 실행

./dummy 3 2 &

각각 세 명의 자녀를 둔 두 세대를 시작하십시오.

관련 정보