Tempo limite com 'reinicialização da rede de serviço'

Tempo limite com 'reinicialização da rede de serviço'

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 timeouto 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 timeoute 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&

informação relacionada