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 timeout
el 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 timeout
e 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&