Aplicaciones prácticas del comando Sleep
Ahora que entiendes los conceptos básicos del comando sleep
y cómo usarlo con variables, exploremos algunas aplicaciones prácticas. Estos ejemplos demuestran cómo se utiliza el comando sleep
en escenarios del mundo real.
Creando un sencillo temporizador de cuenta regresiva
Creemos un temporizador de cuenta regresiva que demuestre un uso más complejo del comando sleep
:
cd ~/project
touch countdown.sh
nano countdown.sh
Agrega el siguiente contenido:
#!/bin/zsh
## Function to display a countdown
countdown() {
local seconds=$1
while [ $seconds -gt 0 ]; do
echo -ne "\rTime remaining: $seconds seconds "
sleep 1
((seconds--))
done
echo -e "\rCountdown complete! "
}
## Specify the countdown duration
echo "Starting a 5-second countdown:"
countdown 5
echo "Countdown script execution complete."
Guarda, sal de nano y haz el script ejecutable:
chmod +x countdown.sh
Ejecuta el script:
./countdown.sh
Deberías ver una cuenta regresiva desde 5 segundos hasta 0, con la actualización del tiempo en el mismo lugar:
Starting a 5-second countdown:
Time remaining: 5 seconds
Time remaining: 4 seconds
Time remaining: 3 seconds
Time remaining: 2 seconds
Time remaining: 1 seconds
Countdown complete!
Countdown script execution complete.
Simulando un proceso con indicador de progreso
Creemos un script que simule un proceso de larga duración con un sencillo indicador de progreso:
cd ~/project
touch progress.sh
nano progress.sh
Agrega el siguiente contenido:
#!/bin/zsh
## Function to show a simple progress bar
show_progress() {
local duration=$1
local steps=10
local step_duration=$(echo "scale=2; $duration / $steps" | bc)
echo "Starting process..."
echo -n "Progress: ["
for i in {1..10}; do
sleep $step_duration
echo -n "#"
done
echo "] Done!"
}
## Run a process that takes 5 seconds with a progress indicator
show_progress 5
echo "Process completed successfully."
Guarda, sal de nano y haz el script ejecutable:
chmod +x progress.sh
Ejecuta el script:
./progress.sh
Deberías ver una barra de progreso que se llena en 5 segundos:
Starting process...
Progress: [##########] Done!
Process completed successfully.
Controlando la tasa de operaciones
En este ejemplo, demostraremos cómo usar el comando sleep
para controlar la tasa de operaciones, lo cual es útil para limitar la tasa de llamadas a una API o procesar grandes conjuntos de datos:
cd ~/project
touch rate_limit.sh
nano rate_limit.sh
Agrega el siguiente contenido:
#!/bin/zsh
## Define the rate limit (operations per second)
OPERATIONS_PER_SECOND=2
SLEEP_DURATION=$(echo "scale=3; 1 / $OPERATIONS_PER_SECOND" | bc)
echo "Performing operations at a rate of $OPERATIONS_PER_SECOND per second"
echo "Each operation will be followed by a $SLEEP_DURATION second delay"
## Simulate 6 operations with rate limiting
for i in {1..6}; do
echo "Performing operation $i at $(date +%H:%M:%S.%N | cut -c1-12)"
## Simulate the operation
sleep 0.1
## Rate-limiting delay between operations
if [ $i -lt 6 ]; then
sleep $SLEEP_DURATION
fi
done
echo "All operations completed"
Guarda, sal de nano y haz el script ejecutable:
chmod +x rate_limit.sh
Ejecuta el script:
./rate_limit.sh
Deberías ver que las operaciones se realizan a una tasa controlada:
Performing operations at a rate of 2 per second
Each operation will be followed by a 0.500 second delay
Performing operation 1 at 10:30:45.12
Performing operation 2 at 10:30:45.72
Performing operation 3 at 10:30:46.32
Performing operation 4 at 10:30:46.92
Performing operation 5 at 10:30:47.52
Performing operation 6 at 10:30:48.12
All operations completed
Estos ejemplos demuestran cómo se puede usar el comando sleep
en escenarios de scripting más avanzados. La capacidad de controlar el tiempo es una herramienta poderosa en el scripting de shell que permite muchas aplicaciones prácticas.