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

Cómo pausar una secuencia de comandos Bash con el comando de suspensión de Linux

Bash shell en el concepto de escritorio Unity

El comando sleep hace que tu computadora Linux haganada. Tal vez contra-intuitivo, pero un período de inactividad es a veces justo lo que se necesita. Este artículo le muestra cómo usar este comando de shell Bash de manera efectiva.

Utilizando sleep es fácil. En la línea de comando escriba sleep, un espacio, un número y luego presione Entrar.

sleep 5

El cursor desaparecerá durante cinco segundos y luego regresará. ¿Que pasó? Utilizando sleep en la línea de comando le indica a Bash que suspenda el procesamiento durante el tiempo que usted proporcionó. En nuestro ejemplo, esto fue 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 por 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 por cinco minutos y veinte segundos. Un formato correcto de este comando es:

sleep 5m 20

Si olvida proporcionar el m sufijo en la duración de los minutos, le indicará sleep hacer una pausa por cinco segundos y luego nuevamente por veinte segundos. Entonces sleep se detendrá por 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 tendrá sentido de ellos. También puede proporcionar un número de coma flotante como parámetro. Por ejemplo, 0.5h 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) le dicen sleep pausar por 10 segundos.

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

Uso del sueño para pausar antes de un comando

los sleep El comando se puede utilizar para hacer una pausa antes de la ejecución de un comando. Este comando se pausaría durante 15 segundos y luego emitiría un pitido.

sleep 15 && echo -en '07'

Uso de suspensión para pausar entre dos comandos

Puedes usar sleep para hacer una pausa entre dos comandos. Este comando enumeraría los archivos en su directorio de Documentos, pausará durante cinco segundos y luego cambiará el directorio de trabajo actual a su directorio de inicio:

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

Salida de dos comandos separados por suspensión

Uso del sueño para pausar la ejecución de un script

Puedes usar el sleep comando en scripts de shell para pausar la ejecución deEl guión durante un tiempo preciso. Por lo general, debe hacer esto para permitir que algún proceso tenga tiempo suficiente para completarse antes de que el script continúe su procesamiento. También puede usarlo para limitar la velocidad de las solicitudes que realiza un script 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 número ISBN de un libro, responde con un volcado de datos JSON con respecto a ese libro. Podemos analizar esos datos pasándolos a través de jq utilidad para recuperar el título del libro. Para que el script no haga hincapié en el servicio web, duerme un segundo entre 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 establecer los permisos de ejecución y hacer que el script sea ejecutable.

chmod +x check_book.sh

El guión requiere el curl y jq servicios públicos 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, use 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 pase en el books.txt archivo como parámetro.

./check_book.sh books.txt

Salida del script de shell check_book.sh

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 ISBN.

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