Apakah ada cara untuk mendapatkan "top" untuk berjalan tepat sekali dan keluar?

13

Saya menemukan output dari perintah shell topmenjadi cara sederhana dan akrab untuk mendapatkan gambaran kasar tentang kesehatan mesin. Saya ingin menyajikan topoutput (atau sesuatu yang sangat mirip) dari server web kecil pada mesin untuk keperluan pemantauan mentah.

Apakah ada cara untuk mendapatkan puncak untuk menulis output teksnya tepat sekali , tanpa memformat karakter? Saya sudah mencoba ini:

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

Ini sepertinya dekat dengan yang saya inginkan, kecuali bahwa (1) tidak ada jaminan bahwa saya tidak akan mendapatkan lebih dari satu layar penuh informasi dan (2) saya harus menghapus semua karakter pemformatan terminal.

Atau adakah topperintah mirip lainnya yang mencantumkan info memori / penggunaan CPU / informasi tingkat mesin secara keseluruhan dan tingkat proses?

(Idealnya, saya suka strategi yang portabel untuk Linux dan Mac OS X, karena pengembang kami menggunakan Mac dan lingkungan prod kami adalah Linux.)

Mickalot
sumber

Jawaban:

22

Di Linux, Anda dapat mencoba ini:

top -bn1 > output.txt

Dari 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.

Dengan OS X, coba:

top -l 1

Dari halaman manual OSX :

 -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.
cuonglm
sumber
Ini sepertinya jawaban yang akan saya cari jika toppada OS X mendukung -b flag. :-( Sayangnya, tidak, dan saya tidak melihat versi yang toptersedia melalui homebrew. Ini sepertinya jawaban yang tepat untuk Linux, tho.
Mickalot
@Mickalot: Lihat pembaruan saya. Bisakah Anda menginstal GNU top di Mac OSX?
cuonglm
@ Gnuoc: /usr/bin/top -l 1di OSX 10.9.4 sempurna ... terima kasih! Sedangkan untuk menginstal GNU top, saya bisa menginstalnya di mesin saya , tetapi saya harus meyakinkan para pengembang lain untuk menginstalnya di mesin mereka agar kode saya berfungsi untuk mereka, jadi saya lebih suka menghindari itu. (Jika itu tidak tersedia melalui homebrew, akan ada perlawanan.) Sekarang saya akan beralih berdasarkan platform, saya akan menjadi serakah ... apakah Anda mengetahui adanya Windows semi-equivalen sehingga para pengembang (kami memiliki beberapa) juga dapat memiliki halaman status mentah? (Jika tidak, tidak apa-apa, jawaban Anda sudah sangat membantu!)
Mickalot
@Mickalot: Ingat catatan dari manpage atas OSX, Perhatikan bahwa sampel pertama yang ditampilkan akan menampilkan% CPU tidak valid untuk setiap proses, karena dihitung menggunakan delta antar sampel. . Dengan pengguna Windows, mungkin Anda dapat menggunakan `` cygwin`
cuonglm
@ Gnuoc Terima kasih atas poin ekstra. Saya kira saya bisa melakukan top -l 2dan membuang halaman sampel pertama?
Mickalot
1

Untuk mendapatkan nomor tipe yang serupa dari sistem Windows Anda ingin melihat PowerShell.

Hanya untuk mendapatkan daftar proses yang Anda dan lihat get-process. Lihatlah referensi ini .

Dalam melakukan beberapa pencarian lebih lanjut, temukan perintah kecil yang menyenangkan di sini .

Yang jika Anda ambil dari loop sementara yang disajikan, untuk kebutuhan Anda adalah:

ps | sort -desc cpu | select -first 30

psdi PowerShell adalah alias untuk get-process.

Yuppers
sumber
Itu terdengar seperti ide bagus! Saya akan meminta salah satu rekan kerja Windows-toting saya untuk mencobanya ...
Mickalot