Esta guía muestra cómo usar el comando sleep de Linux para pausar un script de bash.
Por sí solo, el comando sleep es completamente inútil a menos que le guste cerrar la ventana de su terminal, pero como parte de un script, puede ser usado de muchas maneras diferentes, incluyendo como factor de pausa antes de volver a intentar un comando.
Por ejemplo, imagina que tienes un script que procesa archivos copiados de otro servidor. El script no debería iniciar el proceso de copia hasta que todos los archivos hayan terminado de descargarse. El proceso de descarga se realiza mediante un script completamente separado.
El script para copiar los archivos bien puede contener un bucle para comprobar si todos los archivos han sido descargados (es decir, sabe que debería haber 50 archivos y cuando se han encontrado 50 archivos, se inicia el proceso de copia).
No tiene sentido que el script se pruebe continuamente, ya que ocupa tiempo del procesador. En su lugar, puede elegir probar si hay suficientes archivos copiados y, si no los hay, hacer una pausa durante unos minutos e intentarlo de nuevo. El comando de sueño es perfecto en estas circunstancias.
Cómo usar el comando sleep
Para usar el comando de suspensión de Linux, introduzca lo siguiente en la ventana del terminal:
sleep 5s
El comando anterior hará que su terminal se detenga durante 5 segundos antes de volver a la línea de comandos.
El comando sleep requiere la palabra clave ‘sleep’ seguida del número por el que desea hacer una pausa y luego la unidad de medida.
Puede especificar el retraso en segundos, minutos, horas o días.
- s – segundos
- m – minutos
- h – horas
- d – días
Cuando se trata de esperar días para que algo suceda, podría valer la pena considerar el uso de un trabajo cron para ejecutar el script a intervalos regulares, en lugar de tener un script ejecutándose en segundo plano durante días y días.
El número del comando sleep no tiene que ser un número entero. También puede utilizar números de coma flotante.
Por ejemplo, está perfectamente bien usar la siguiente sintaxis:
sleep 3.5s>.
Un ejemplo de uso para el comando sleep
El siguiente script muestra cómo usar el comando sleep para hacer un reloj de cuenta regresiva basado en la terminal:
#!/bin/bash
x=10
mientras que [ $x -gt 0 ]
do
dormir 1s
claro
>echo "$x segundos hasta el despegue"
x=$( $x - 1))
hecho
>
El script establece la variable x en 10. El bucle while continuará iterando mientras el valor de x sea mayor que cero.
El comando sleep hace una pausa en el script durante 1 segundo cada vez que circula por el bucle.
El resto del script borra la pantalla en cada iteración, muestra el mensaje «x seconds until blast off» (i.e. 10) y luego resta 1 del valor de x.
Sin el comando sleep, el script se acercaría y los mensajes se mostrarían demasiado rápido.
Interruptores
El comando dormir sólo tiene un par de interruptores.
El parámetro –help muestra el archivo de ayuda del comando sleep. Puede lograr lo mismo usando el comando man de la siguiente manera:
man sleep
El comando –version muestra la versión del comando sleep que está instalado en su sistema.
La información devuelta por el interruptor –version es la siguiente:
- Número de versión
- Detalles del copyright
- Licencia
- Autores