Risposte:
Dalla manpage :
Dati due o più argomenti, mettere in pausa per il tempo specificato dalla somma dei loro valori .
Così:
sleep 7m 30s
bash
integrato e GNU sleep
. POSIXly, sleep
è necessario solo per capire i numeri interi come secondi
Ci sono già due risposte eccellenti, ma vorrei espandermi un po '. Copia e incolla il comando qui sotto nel tuo terminale:
$ sleep 3d 5h 7m 30.05s &
[1] 7321
Questo avvierà un secondo processo che dormirà per 3 giorni, 5 ore, 7 minuti e 30,05 secondi. L'ID processo (PID) è7321
nel mio caso.
Per confermare l'uso del 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 prima voce è quella a cui siamo interessati. La seconda voce è per un programma permanente che ho in esecuzione all'avvio. La terza voce è per il comando grep stesso.
Ora per vedere quanto tempo rimane (in secondi) per il sleep
comando generato da PID 7321
, possiamo usare questo: Come determinare il tempo rimanente in uno "sleep"? comando:
$ remaining_sleep_time 7321
277304.05
$ remaining_sleep_time 7321
277296.05
$ remaining_sleep_time 7321
277262.05
Il codice per il comando che puoi includere nel tuo ~/.bashrc
file:
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
deve essere copiato nel tuo ~/.bashrc
file come da link. È inoltre possibile inserire il codice in un file di script bash.
Il comando sleep è sempre conteggiato in secondi. È possibile utilizzare ((7x60) +30) secondi e quindi digitare semplicemente:
dormire 450
sleep $((60*7))
potrebbe essere usato per minuti