Dakika ve saniye ile uyku kullanın


16

5 dakika uyku 5m kullanmayı biliyorum.

7 dakika 30 saniye demek için nasıl kullanabilirim?

Yanıtlar:


32

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

2
Güzel, adam sayfalarını daha dikkatli
okumalıyım

4
Bunun bashyerleşik ve GNU sleep davranışı olduğunu belirtmek gerekir . POSIXly, sleepsadece tam sayıları saniyeler olarak anlamak için gereklidir
Sergiy Kolodyazhnyy

17

Bunu yapmanın başka bir yolu:

sleep 7.5m

man sleep

NUMBER bir tamsayı gerektiren uygulamaların çoğundan farklı olarak, burada NUMBER isteğe bağlı bir kayan nokta sayısı olabilir.


10

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. 7321Benim 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 sleepPID tarafından üretilen komut için ne kadar süre kaldığını (saniye cinsinden) görmek için 7321bunu 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

~/.bashrcDosyanı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'
}

Kalan zamanım çalışmıyor. andy @ 7_ ~ $ rema_sleep_time 7321 rema_sleep_time: komut bulunamadı
fixit7

1
@ fixit7'nin bağlantıya göre dosyanıza remaining_sleep_timekopyalanması gerekir ~/.bashrc. Kodu bir bash komut dosyasına da koyabilirsiniz.
WinEunuuchs2Unix

5

Komut uyku her zaman saniye cinsinden sayılır. ((7x60) +30) saniyeyi kullanabilir ve basitçe şunu yazabilirsiniz:

uyku 450


3
Daha önce belirtildiği gibi , uyku gerçekten her zaman saniyeleri anlar, ancak GNU uyku ve Bash kabuğu durumunda (ksh ve zsh hakkında emin değilim) - bunlar diğer cevaplarda belirtildiği gibi mektup argümanlarına da izin verir. Cevabınız kabuk aritmetik genişletme kullanılarak geliştirilebilir, bu yüzden sleep $((60*7))dakikalarca kullanılabilir bir şey
Sergiy Kolodyazhnyy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.