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.