쉘 스크립트는 두 가지 기능을 하위 프로세스로 실행합니다(&를 통해).
둘 다 잠에 들었습니다(sleep 명령을 통해).
깨워도 될까요?
나는 그들의 PID를 가지고 있습니다.
추신
나는 잠을 자고 &와 함께 기다리고 싶지 않습니다.
답변1
다소 잔인한 접근 방식은 sleep
프로세스를 종료하는 것입니다(스크립트/함수가 실행 중인 전체 하위 쉘이 아닌). 다음 쉘 스크립트를 고려하십시오.
#!/bin/bash
sleep 20
echo "Done!"
또는 다음 함수를 사용하세요.
#!/bin/bash
function gotosleep()
{
sleep 20
echo "Done!"
}
gotosleep &
sleep 60 # Not really necessary, keeps the script in foreground.
그런 다음 sleep
프로세스를 찾으십시오.
$ ps -ef | grep sleep
you PID PGID ... sleep 20
그리고 그것을 죽여라:
$ kill PID
그러면 스크립트가 출력됩니다(최소한 bash
).
./script.sh: line 2: PID Terminated sleep 20
Done!
그렇게 하고 싶지 않기 때문에 wait
Bash의 작은 메시지를 처리해야 합니다. 생각이 바뀌면 꼭 보세요이 문제:
sleep 20 &
if wait $! 2>/dev/null; then
# Keep working
continue
else
echo "Done!"
return # from function
fi