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"