Cuando se necesita pausar o retrasar la ejecución de código (delay) dentro de un script Bash se suele utilizar la herramienta sleep
, la cual por defecto toma un parámetro que representa la cantidad de segundos a "dormir" (pausar antes de retomar la ejecución). Sin embargo, en sistemas GNU/Linux, sleep
permite utilizar otras unidades como minutos, horas, días, etc.
La implementación de GNU del comando sleep
(man sleep
) admite un sufijo en el parámetro que representa la unidad. Por defecto, el parámetro está expresado en segundos, pero si se agrega un sufijo se cambia la unidad:
- s: segundos
- m: minutos
- h: horas
- d: días
Dormir durante 1 segundo:
sleep 1 sleep 1s
Dormir durante 1 minuto:
sleep 1m
Dormir durante 1 hora:
sleep 1h
Dormir durante 1 día:
sleep 1d
Seguramente tenga muchas utilidades, pero si se requiere dormir un script por un día, tal vez sea mejor y más robusto utilizar cron
.
Ejemplos:
root@linuxito:~# date; sleep 1; date Fri Feb 3 06:07:23 EST 2017 Fri Feb 3 06:07:24 EST 2017 root@linuxito:~# date; sleep 1m; date Fri Feb 3 06:07:28 EST 2017 Fri Feb 3 06:08:28 EST 2017 root@linuxito:~# date; sleep 1h; date Fri Feb 3 06:08:36 EST 2017 Fri Feb 3 07:08:36 EST 2017 root@linuxito:~#
FreeBSD
La implementación de sleep
provista por FreeBSD no soporta el uso de sufijos, por lo cual se deben utilizar siempre segundos.
Dormir durante 1 segundo:
sleep 1
Dormir durante 1 minuto:
sleep 60
Dormir durante 1 hora:
sleep 3600
Dormir durante 1 día:
sleep 86400