Antworten:
Aus der Manpage :
Halten Sie bei zwei oder mehr Argumenten für die Zeit an, die durch die Summe ihrer Werte angegeben wird .
So:
sleep 7m 30s
bash
integriertes und GNU- sleep
Verhalten ist. POSIXly, sleep
ist nur erforderlich, um Ganzzahlen als Sekunden zu verstehen
Es gibt bereits zwei ausgezeichnete Antworten, aber ich würde gerne etwas erweitern. Kopieren Sie den folgenden Befehl und fügen Sie ihn in Ihr Terminal ein:
$ sleep 3d 5h 7m 30.05s &
[1] 7321
Dies startet einen zweiten Prozess, der 3 Tage, 5 Stunden, 7 Minuten und 30,05 Sekunden lang ruht. Die Prozess-ID (PID) ist 7321
in meinem Fall.
Bestätigen Sie die PID mit
$ 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
Der erste Eintrag ist der, an dem wir interessiert sind. Der zweite Eintrag ist für ein permanentes Programm, das ich beim Start ausgeführt habe. Der dritte Eintrag bezieht sich auf den Befehl grep.
Um nun zu sehen, wie viel Zeit (in Sekunden) für den sleep
von PID generierten Befehl verbleibt, 7321
können wir Folgendes verwenden: Wie kann man die verbleibende Zeit in einem "Schlaf" bestimmen? Befehl:
$ remaining_sleep_time 7321
277304.05
$ remaining_sleep_time 7321
277296.05
$ remaining_sleep_time 7321
277262.05
Der Code für den Befehl, den Sie in Ihre ~/.bashrc
Datei aufnehmen können:
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
muss ~/.bashrc
gemäß dem Link in Ihre Datei kopiert werden . Sie können den Code auch in eine Bash-Skriptdatei einfügen.
Der Befehl sleep zählt immer in Sekunden. Sie können ((7x60) +30) Sekunden verwenden und dann einfach Folgendes eingeben:
Schlaf 450
sleep $((60*7))
für Minuten verwendet werden könnte