Cómo pausar un script Bash con el comando de suspensión de Linux

Contenidos

Bash shell en el concepto de escritorio Unity

El comando de suspensión hace que su computadora Linux no haga nada. Tal vez sea contrario a la intuición, pero de vez en cuando lo que se necesita es un período de inactividad. Este post le muestra cómo utilizar este comando de shell Bash de manera efectiva.

Usando sleep es fácil. En el tipo de línea de comando sleep, un espacio, un número y después presione Entrar.

sleep 5

El cursor desaparecerá durante cinco segundos y después volverá. ¿Qué sucedió? Usando sleep en la línea de comando le indica a Bash que suspenda el procesamiento a lo largo del tiempo que usted proporcionó. En nuestro ejemplo, fueron cinco segundos.

No hay salida visible del comando sleep 5

Podemos pasar duraciones a sleep en días, horas y minutos, así como en segundos. Para hacer esto, incluya un sufijo de d, h, m, o s con la duración. Para hacer que el sueño se detenga durante un día, cuatro horas, siete minutos y cinco segundos, use un comando como este:

sleep 1d 4h 7m 5s

los s el sufijo (por segundos) es opcional. Sin sufijo sleep tratará cualquier duración como segundos. Supongamos que quisieras tener sleep pausa durante cinco minutos y veinte segundos. Un formato correcto de este comando es:

sleep 5m 20

Si olvida proporcionar el m sufijo en la extensión de los minutos, instruirá sleep para hacer una pausa de cinco segundos y después de nuevo durante veinte segundos. Entonces sleep se detendrá durante 25 segundos.

Muchos comandos requieren que proporciones parámetros en un orden específico, pero sleep es muy indulgente. Puede proporcionarlos en cualquier orden y sleep les dará sentido. Además puede proporcionar un número de punto flotante como parámetro. A modo de ejemplo, 0,5 h es una forma válida de indicar que desea sleep hacer una pausa de media hora.

Todos los siguientes comandos (cada vez más excéntricos) dicen sleep para hacer una pausa de 10 segundos.

sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m

Uso de la suspensión para hacer una pausa antes de un comando

los sleep El comando puede usarse para dar una pausa antes de la ejecución de un comando. Este comando se detendría durante 15 segundos y después emitiría un pitido.

sleep 15 && echo -en '07'

Uso de la suspensión para hacer una pausa entre dos comandos

Puedes utilizar sleep para dar una pausa entre dos comandos. Este comando enumeraría los archivos en su directorio de Documentos, se detendría durante cinco segundos y después cambiaría el directorio de trabajo actual a su directorio de inicio:

ls -R ~/Documents && sleep 5 && cd ~

Salida de dos comandos separados por dormir

Uso de la suspensión para pausar la ejecución de un script

Puedes utilizar el sleep comando en scripts de shell para pausar la ejecución del script durante un período de tiempo preciso. Regularmente, haría esto para permitir que algún procedimiento tenga tiempo suficiente para completarse antes de que el script continúe su procesamiento. Además puede usarlo para limitar las solicitudes que un script realiza a otro recurso.

Para demostrar exactamente eso, aquí hay un script que llama a un servicio web de Google usando curl. Cuando consulta el servicio web con el ISBN número de un libro, responde con un volcado de datos JSON con respecto a ese libro. Podemos analizar esos datos pasándolos a través del jq utilidad para recuperar el título del libro. Para que el script no haga hincapié en el servicio web, duerme durante un segundo entre las solicitudes web.

Cree un archivo que contenga el siguiente texto y guárdelo como check_book.sh.

#!/bin/bash

for book in `cat $1`
do
 echo $book":"
 curl -s https://www.googleapis.com/books/v1/volumes?q=isbn:$book | jq '.items | .[] | .volumeInfo.title'
 echo ""
 sleep 1
done

echo "All done."

Escriba el siguiente comando para determinar los permisos de ejecución y hacer que el script sea ejecutable.

chmod +x check_book.sh

El guión necesita el curl y jq utilidades. Utilizar apt-get para instalar estos paquetes en su sistema si está usando Ubuntu u otra distribución basada en Debian. En otras distribuciones de Linux, utilice la herramienta de administración de paquetes de su distribución de Linux.

sudo apt-get install curl
sudo apt-get install jq

Cree un archivo de texto que contenga los siguientes números y guárdelo como books.txt.

9781565921276
9781874416685
9781565921672
9780521431088
9781491941591

Ejecutar el check_book.sh guión y pasar el books.txt archivo como parámetro.

./check_book.sh books.txt

Las solicitudes se realizan al servicio web de Google a intervalos de un segundo. El título del libro aparecerá poco después de consultar cada número de ISBN.

Eso es todo lo que hay para sleep. El funcionamiento interno del check_book.sh script están más allá del alcance de este post. El guión se eligió únicamente para ilustrar un uso válido de la sleep mando. Si desea leer más sobre los dos componentes principales del script, consulte la curl página del proyecto y el jq Manual en Linea.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.