![bash 스크립트에서 마지막 실행 프로세스의 PID를 얻는 방법은 무엇입니까?](https://linux55.com/image/228321/bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EC%8B%A4%ED%96%89%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20PID%EB%A5%BC%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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