Respostas:
Na página de manual :
Dados dois ou mais argumentos, faça uma pausa pela quantidade de tempo especificada pela soma de seus valores .
Então:
sleep 7m 30s
bash
um sleep
comportamento interno e GNU . POSIXly, sleep
é necessário entender apenas números inteiros como segundos #
Já existem duas excelentes respostas, mas eu gostaria de expandir um pouco. Copie e cole o comando abaixo em seu terminal:
$ sleep 3d 5h 7m 30.05s &
[1] 7321
Isso iniciará um segundo processo que dormirá por 3 dias, 5 horas, 7 minutos e 30,05 segundos. O ID do processo (PID) está 7321
no meu caso.
Para confirmar o uso do 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
A primeira entrada é a que nos interessa. A segunda entrada é para um programa permanente em execução na inicialização. A terceira entrada é para o próprio comando grep.
Agora, para ver quanto tempo resta (em segundos) para o sleep
comando gerado pelo PID 7321
, podemos usar o seguinte: Como determinar a quantidade de tempo restante em uma "suspensão"? comando:
$ remaining_sleep_time 7321
277304.05
$ remaining_sleep_time 7321
277296.05
$ remaining_sleep_time 7321
277262.05
O código para o comando que você pode incluir no seu ~/.bashrc
arquivo:
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
precisa ser copiado para o seu ~/.bashrc
arquivo de acordo com o link. Você também pode colocar o código em um arquivo de script bash.
O comando sleep está sempre contando em segundos. Você pode usar ((7x60) +30) segundos e digitar simplesmente:
sono 450
sleep $((60*7))
poderia ser usado para minutos