bash 스크립트에서 마지막 실행 프로세스의 PID를 얻는 방법은 무엇입니까?

bash 스크립트에서 마지막 실행 프로세스의 PID를 얻는 방법은 무엇입니까?

Bash 스크립트에서 마지막으로 실행된 명령의 프로세스 ID를 얻으려고 합니다. 보통 나는 이렇게 한다:

$ nohup ./test > nhout &
nohup: redirecting stderr to stdout
$ echo $!
3006196 #This is the PID

쉘 스크립트에서 똑같은 일을 하려고 합니다.

#!/bin/bash
for i in {1..10};do
    `nohup ./testscript_${i} > nhout_${i} &`
    echo $! >> pid_list.txt
done

그런데 확인해 보니 pid_list.txt파일이 비어있습니다. 나는 이것이 $!명령이 아닌 내가 실행한 스크립트를 참조하기 때문일 수 있음을 이해합니다 nohup. 하지만 이 문제를 해결하는 방법을 모르고 온라인에서 리소스를 찾을 수 없습니다. 어떻게 이를 달성할 수 있나요?

답변1

nohup명령 주위에 잘못된 백틱 쌍이 있습니다. 결과적으로 nohup명령 nohup은 실행될 백틱의 출력을 생성하기 위한 부작용으로만 실행됩니다.

이 시도:

#!/bin/bash
for i in {1..10}; do
    nohup "./testscript_$i" > "nhout_$i" &
    echo "$!" >> pid_list.txt
done

관련 정보