Yanıtlar:
Gönderen man :
İki veya daha fazla bağımsız değişken verildiğinde , değerlerinin toplamıyla belirtilen süre boyunca duraklatın .
Yani:
sleep 7m 30s
bash
yerleşik ve GNU sleep
davranışı olduğunu belirtmek gerekir . POSIXly, sleep
sadece tam sayıları saniyeler olarak anlamak için gereklidir
Zaten iki mükemmel cevap var ama biraz genişletmek istiyorum. Aşağıdaki komutu kopyalayıp terminalinize yapıştırın:
$ sleep 3d 5h 7m 30.05s &
[1] 7321
Bu, 3 gün, 5 saat, 7 dakika ve 30.05 saniye boyunca uyuyacak ikinci bir işleme başlayacaktır. 7321
Benim durumumda işlem kimliği (PID) .
PID kullanımını onaylamak için
$ 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
İlk giriş, ilgilendiğimiz giriş. İkinci giriş, başlangıçta çalıştırdığım kalıcı bir program için. Üçüncü girdi grep komutunun kendisi içindir.
Şimdi sleep
PID tarafından üretilen komut için ne kadar süre kaldığını (saniye cinsinden) görmek için 7321
bunu kullanabiliriz: “Uyku” da kalan süreyi nasıl belirleyebilirim? komut:
$ remaining_sleep_time 7321
277304.05
$ remaining_sleep_time 7321
277296.05
$ remaining_sleep_time 7321
277262.05
~/.bashrc
Dosyanıza ekleyebileceğiniz komutun kodu :
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
kopyalanması gerekir ~/.bashrc
. Kodu bir bash komut dosyasına da koyabilirsiniz.
Komut uyku her zaman saniye cinsinden sayılır. ((7x60) +30) saniyeyi kullanabilir ve basitçe şunu yazabilirsiniz:
uyku 450
sleep $((60*7))
dakikalarca kullanılabilir bir şey