Respuestas:
Desde la página del manual :
Dados dos o más argumentos, haga una pausa por la cantidad de tiempo especificada por la suma de sus valores .
Entonces:
sleep 7m 30s
bash
un sleep
comportamiento incorporado y GNU . POSITIVAMENTE, sleep
solo se requiere entender los enteros como segundos
Ya hay dos respuestas excelentes, pero me gustaría ampliar un poco. Copie y pegue el siguiente comando en su terminal:
$ sleep 3d 5h 7m 30.05s &
[1] 7321
Esto iniciará un segundo proceso que dormirá durante 3 días, 5 horas, 7 minutos y 30.05 segundos. El ID de proceso (PID) está 7321
en mi caso.
Para confirmar el uso de PID
$ ps aux | grep sleep
rick 7321 0.0 0.0 14356 660 pts/2 S 22:40 0:00 sleep 3d 5h 7m 30.05s
root 12415 0.0 0.0 14356 700 ? S 22:41 0:00 sleep 60
rick 12500 0.0 0.0 21292 968 pts/2 R+ 22:41 0:00 grep --color=auto sleep
La primera entrada es la que nos interesa. La segunda entrada es para un programa permanente que tengo ejecutándose en el inicio. La tercera entrada es para el comando grep en sí.
Ahora para ver cuánto tiempo queda (en segundos) para el sleep
comando generado por PID 7321
, podemos usar esto: ¿Cómo determinar la cantidad de tiempo que queda en un "sueño"? mando:
$ remaining_sleep_time 7321
277304.05
$ remaining_sleep_time 7321
277296.05
$ remaining_sleep_time 7321
277262.05
El código para el comando que puede incluir en su ~/.bashrc
archivo:
remaining_sleep_time() { # arg: pid
ps -o etime= -o args= -p "$1" | perl -MPOSIX -lane '
%map = qw(d 86400 h 3600 m 60 s 1);
$F[0] =~ /(\d+-)?(\d+:)?(\d+):(\d+)/;
$t = -($4+60*($3+60*($2+24*$1)));
for (@F[2..$#F]) {
s/\?//g;
($n, $p) = strtod($_);
$n *= $map{substr($_, -$p)} if $p;
$t += $n
}
print $t'
}
remaining_sleep_time
debe copiarse en su ~/.bashrc
archivo según el enlace. También puede poner el código en un archivo de script bash.
El comando dormir siempre cuenta en segundos. Puede usar ((7x60) +30) segundos y luego escribir simplemente:
dormir 450
sleep $((60*7))
podría usarse durante minutos