Solução potencial # 1
Use o comando timeout
:
$ date
Mon May 6 07:35:07 EDT 2013
$ timeout 5 sleep 100
$ date
Mon May 6 07:35:14 EDT 2013
Você também pode colocar um guarda no comando timeout
para kill
do processo, se ele não tiver parado após algum período de tempo também.
$ date
Mon May 6 07:40:40 EDT 2013
$ timeout -k 20 5 sleep 100
$ date
Mon May 6 07:40:48 EDT 2013
Isso vai esperar até 20 segundos após o processo sleep 100
ter parado, se ainda estiver em execução, então timeout
enviará um sinal kill
.
Solução potencial # 2
Uma maneira alternativa, embora o método mais arriscado seria o seguinte:
./myProgram &
sleep 1
kill $! 2>/dev/null && echo "myProgram didn't finish"
Encontrou essa técnica no Stack Overflow em uma pergunta intitulada: Limitando a tempo que um programa é executado no Linux . Especificamente, esta resposta .
OBSERVAÇÃO: Por um comentário deixado por @mattdm, o método acima pode ser arriscado, pois pressupõe que não houve nenhum novo processo iniciado desde o seu processo. Portanto, nenhum novo PID foi atribuído. Diante disso, essa abordagem provavelmente não deve ser usada, mas está aqui apenas como referência para uma abordagem geral do problema. O método timeout
é a melhor opção do 2.