Cygwin'de pencere işlemlerini sürekli göstermenin bir yolu var mı


13

Bir cygwin kabuğundan süreçleri üst veya bir varyant kullanarak izlemek istiyorum. Bunun nedeni, gerçek zamanlı raporlaması ve sürekli güncellemeleri. Ancak cygwin altında, üst Windows işlemleri hakkında rapor olmaz.

Teh forumlar Ben ps -Walternatif olarak kullanmanızı tavsiye edilmiştir, ama bu açıkçası bana artık gerçek zamanlı bilgi vermek dezavantajı var, ama ben komut yazdığınızda sadece statik bir anlık görüntü.

topSadece cygwins süreçlerini değil tüm süreçlerimi görüntülemek için cygwin'de çalışmaya başlamanın bir yolu var mı ?


1
Özellikle Cygwin'de bulunması için bir neden var mı? Windows işlemlerini tablo biçiminde ( top
Darth Android

Yanıtlar:


12

Bir bash kabuğundan, aşağıdaki komut satırıyla tüm Windows işlemlerini izleyebilirsiniz:

watch "ps -W" # pipe to grep for filtering

Tüm java işlemlerini görmek için, örneğin:

watch "ps -W | grep java"

"Ps-W" nin hem cygwin hem de cygwin olmayan süreçleri listelediğini unutmayın.


Ya iş ya ps -Wda ps --windowsbkz.ps --help
Timo


1

Görünüşe göre böyle bir şey yapabilirsiniz:

wmic process get ProcessId,Name,UserModeTime,KernelModeTime /EVERY:1

Kullanıcı ve Çekirdek modu süreleri saniyenin 1 / 10.000.000'inde ifade edilir.

Saniyede CPU kullanımını elde etmek için bu çıkışı sonradan işleyebilmelisiniz.

Burada cygwin's kullanarak perl:

wmic process get ProcessId,Name,UserModeTime,KernelModeTime /EVERY:1 |
  perl -lne '
    if (/\S/) {
      my ($k,$c,$p,$u) = split /\s{2,}/;
      $n{"$p\t$c"}=$k+$u;
    } else {
      my %c;
      for my $k (keys %n) {
        $c{$k} = $n{$k} - $o{$k} if defined $o{$k}
      }
      print "$_\t" . $c{$_}/1e5 for (sort {$c{$b}<=>$c{$a}} keys %c)[0..20];
      %o = %n; %n = undef; print ""
    }'

Gibi bir şey çıktılar:

0       System Idle Process     588.12377
2196    sh.exe  107.00075
248     svchost.exe     85.80055
7140    explorer.exe    26.52017
[...]

her saniye.

Not ki eğer Sistem Boşta İşlemi gösterileri sistem o sayıları gibi 8 CPU çekirdeği (iyi, en azından 8 Konu) tüm CPU CPU süresi olduğundan bulunuyor boşta sistem üzerinde hemen altında% 800.

Ayrıca EVERY:1yukarıdakinin bir yalan olduğunu unutmayın . wmicbu çıktıyı her saniye veriyor gibi görünmüyor. Büyük olasılıkla, her rapor arasında yaklaşık 1 saniye uyur ve raporu hesaplamak için gereken süreyi telafi etmez. Yani pratikte, her 1 saniyede bir çalışacak ve bu da bu yüzdelerin çok doğru olmadığı ve biraz fazla tahmin edilemeyeceği anlamına geliyor.

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.