Eu tenho um script em execução no Fedora 22 onde estou reiniciando a rede de serviço como parte de uma chamada de solução de problemas service network restart
. Quero verificar se esse comando está demorando muito para ser executado. Se demorar muito, quero exibir uma mensagem dizendo "Erro ao reiniciar o serviço de rede". Caso contrário, quero continuar com o script.
Responder1
Você pode usar timeout
o comando para executar seu comando ou script em um determinado tempo limite. Algo semelhante a isto:
timeout 10m command
Que espera que o comando termine em 10 minutos, caso contrário, o mata e sai com o status 124. Em seguida, você pode verificar o status de saída timeout
e imprimir a mensagem apropriada com base nele. Veja aqui para mais:página de manual de tempo limite.
Se você não quiser eliminar o comando longo, faça algo assim:
(( sleep $TIMEOUT; echo "command took so long!" ) & exec $COMMAND )
Em TIMEOUT isso imprimirá a mensagem, mas o comando continuará a ser executado.
Responder2
Se você não se importa em editar os scripts originais do sistema, dentro do script você pode criar uma função como
timeoutf(){
#If hangs 1 minute, dies..
sleep 1m
kill $PPID
}
timeoutf&