![하위 프로세스 PID 시간 초과](https://linux55.com/image/134573/%ED%95%98%EC%9C%84%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20PID%20%EC%8B%9C%EA%B0%84%20%EC%B4%88%EA%B3%BC.png)
timeout
나는 주어진 시간 내에 명령(예를 들어)을 실행하기 위해 bash 스크립트에서 이 유틸리티를 사용하고 있습니다 timeout -s SIGINT 500s ./my_script
. 프로세스가 myscript
얼마나 많은 CPU/메모리를 사용하는지 확인하기 위해 프로세스를 모니터링하고 싶습니다 (예: htop -p <pid>
명령 사용).
프로세스가 백그라운드에서 시작될 때( 를 사용하여 &
) 변수를 검색하여 프로그래밍 방식으로 해당 pid를 얻을 수 있다는 것을 알고 있습니다 $!
. 문제는 시간 초과로 인해 새로운 하위 프로세스가 생성되고 $!
변수를 사용하여 myscript의 pid가 아닌 "timeout의 pid"를 얻는다는 것입니다.
시간 초과로 인해 생성된 하위 프로세스의 pid를 검색하는 방법은 무엇입니까?
답변1
timeout
스크립트를 시작할 기회를 준 다음 ps
다음과 같은 상위 프로세스를 물어보십시오 timeout
.
timeout -s SIGINT 500s ./my_script &
bgpid=$!
sleep 1
p=$(ps -o pid= --ppid "$bgpid")
echo The pid you want is: "$p"