최대 절전 모드 프로세스를 깨우는 방법은 무엇입니까?

최대 절전 모드 프로세스를 깨우는 방법은 무엇입니까?

쉘 스크립트는 두 가지 기능을 하위 프로세스로 실행합니다(&를 통해).
둘 다 잠에 들었습니다(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!

그렇게 하고 싶지 않기 때문에 waitBash의 작은 메시지를 처리해야 합니다. 생각이 바뀌면 꼭 보세요이 문제:

sleep 20 &
if wait $! 2>/dev/null; then
    # Keep working
    continue
else
    echo "Done!"
    return # from function
fi

관련 정보