Como acordar o processo de dormir?

1

O script shell executa duas funções como processos filho (via &).
Ambos foram dormir (via comando de sono).

É possível acordá-los?

Eu tenho seus pids.

P.s.

Eu não quero correr com o & e espere

    
por yuris 08.05.2016 / 16:24

1 resposta

1

Uma maneira bastante bárbara de fazer isso seria matar o processo sleep (não o subnível completo no qual seu script / função é executado). Considere o seguinte script de shell:

#!/bin/bash
sleep 20
echo "Done!"

ou, com uma função:

#!/bin/bash

function gotosleep()
{
    sleep 20
    echo "Done!"
}

gotosleep &
sleep 60 # Not really necessary, keeps the script in foreground.

Em seguida, localize o processo sleep :

$ ps -ef | grep sleep
you    PID    PGID  ... sleep 20

E mate:

$ kill PID

Seu roteiro será gerado (pelo menos em bash ):

./script.sh: line 2: PID Terminated    sleep 20
Done!

Como você não quer wait corretamente, você terá que fazer com a pequena mensagem de Bash. Se você mudar de ideia, dê uma olhada em esta pergunta :

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

Tags