Tiempo de espera con 'reinicio de la red de servicio'

Tiempo de espera con 'reinicio de la red de servicio'

Tengo un script ejecutándose en Fedora 22 donde estoy reiniciando la red de servicio como parte de una llamada de solución de problemas service network restart. Quiero comprobar si ese comando tarda demasiado en ejecutarse. Si tarda demasiado, quiero mostrar un mensaje que diga "Error al reiniciar el servicio de red". De lo contrario quiero continuar con el guión.

Respuesta1

Puede usar timeoutel comando para ejecutar su comando o secuencia de comandos en un tiempo de espera determinado. Algo parecido a esto:

timeout 10m command 

Lo que espera a que el comando finalice en 10 minutos; de lo contrario, lo mata y sale con el estado 124. Luego puede verificar el estado de salida timeoute imprimir el mensaje apropiado según él. Consulte aquí para obtener más información:página de manual de tiempo de espera.

Si no desea eliminar el comando largo, haga algo como esto:

(( sleep $TIMEOUT; echo "command took so long!" ) & exec $COMMAND )

En TIMEOUT esto imprimirá el mensaje pero el comando continúa ejecutándose.

Respuesta2

Si no le interesa editar los scripts originales del sistema, dentro del script puede crear una función como

timeoutf(){
    #If hangs 1 minute, dies..
    sleep 1m 
    kill $PPID  
}

timeoutf&

información relacionada