Tam olarak bir kez koşmak ve çıkmak için "üst" almanın bir yolu var mı?


13

Kabuk komutunun çıktısının top, bir makinenin sağlığı hakkında kabaca bir fikir edinmenin basit ve tanıdık bir yolu olduğunu düşünüyorum. topHam izleme amacıyla bir makinedeki küçük bir web sunucusundan çıktı (veya buna çok benzer bir şey) sunmak istiyorum .

Karakterleri biçimlendirmeden metin çıktısını tam olarak bir kez yazmanın bir yolu var mı ? Bunu denedim:

(sleep 1; echo 'q') | top > output.txt

Bu , istediğim şeye yakın gibi görünüyor , ancak (1) birden fazla veya bir ekran bilgi bilgisi almayacağımın garantisi yok ve (2) tüm terminal biçimlendirme karakterlerini çıkarmak zorundayım.

Veya tophem makine çapında hem de işlem düzeyinde bellek / CPU kullanımı / çalışma süresi bilgilerini listeleyen başka bir komut var mı?

(İdeal olarak, geliştiricilerimiz Mac'leri kullandığından ve üretim ortamımız Linux olduğundan, hem Linux hem de Mac OS X için taşınabilir bir stratejiyi çok isterim.)

Yanıtlar:


23

Linux'ta şunu deneyebilirsiniz:

top -bn1 > output.txt

Gönderen man top:

-b : Batch-mode operation
            Starts top in 'Batch' mode, which could be useful for sending
            output from top to other programs or  to  a  file.   In  this
            mode, top will not accept input and runs until the iterations
            limit you've set with the '-n' command-line option  or  until
            killed.
....
-n : Number-of-iterations limit as:  -n number
            Specifies  the  maximum  number of iterations, or frames, top
            should produce before ending.

OS X ile şunları deneyin:

top -l 1

En üst OSX kılavuzundan :

 -l <samples>
              Use logging mode and display <samples> samples, even if 
              standard output is a terminal. 0 is treated  as  infinity.   
              Rather than redisplaying, output is periodically printed in 
              raw form. Note that the first sample displayed will have an 
              invalid %CPU displayed for each process,  as it is calculated 
              using the delta between samples.

Bu top, OS X'te -b bayrağını destekleseydi, tam olarak aradığım cevaba benziyor . :-( Ne yazık ki, öyle değil ve tophomebrew aracılığıyla kullanılabilir bir sürümünü görmüyorum.Bu Linux için doğru cevap gibi görünüyor, tho
Mickalot

@Mickalot: Güncellememi görün. Mac OSX'te GNU top yükleyebilir misiniz?
cuonglm

@Gnuoc: /usr/bin/top -l 1OSX 10.9.4'te mükemmel ... teşekkürler! GNU top yüklemeden gelince, bunu yükleyebilir benim makinede, ama yüklemeniz diğer devs ikna etmesi gerekir onların yüzden ziyade o önleyeceğini, onlar için çalışmaya benim kodu için makineler. (Homebrew aracılığıyla mevcut değilse, direnç olacak.) Şimdi platforma dayalı olarak geçiş yapacağım, açgözlü olacağım ... herhangi bir Windows yarı eşdeğerinin farkında mısınız? birkaç) kaba bir durum sayfası da olabilir? (Değilse, sorun değil, cevabınız çok yardımcı oldu!)
Mickalot

@Mickalot: OSX üst kılavuz sayfasındaki notu hatırlayın, Görüntülenen ilk örneğin, örnekler arasındaki delta kullanılarak hesaplandığından, her işlem için geçersiz bir% CPU görüntüleneceğini unutmayın. . Windows kullanıcıları ile, belki `` cygwin`` kullanabilirsiniz
cuonglm

@Gnuoc Ekstra puan için teşekkürler. Sanırım top -l 2örneklerin ilk sayfasını yapabilir ve atabilir miyim?
Mickalot

1

Bir Windows sisteminden benzer tipte numaraları almak için powershell'e göz atmak isteyeceksiniz.

Sadece süreçlerin bir listesini almak ve bakmak get-process. Bu referansa bir göz atın .

Daha fazla arama yaparken, burada güzel bir komut buldum .

Sunulan while döngüsünden çıkarırsanız, ihtiyaçlarınız için:

ps | sort -desc cpu | select -first 30

pspowershell için bir takma addır get-process.


Bu harika bir fikir gibi geliyor! Bunu denemek için Windows iş arkadaşlarımdan birini alacağım ...
Mickalot
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.