Jawaban:
Mengapa menggunakan psketika Anda bisa melakukannya dengan mudah dengan topperintah?
Jika Anda harus menggunakan ps, coba ini:
ps aux | sort -nrk 3,3 | head -n 5
Jika Anda menginginkan sesuatu yang benar-benar 'top'esq dengan pembaruan konstan, gunakan arloji
watch "ps aux | sort -nrk 3,3 | head -n 5"
ps aux | sort -nrk 3,3 | head -n 5
topsebenarnya bekerja.
topmembaca daftar proses dan menampilkan hasilnya sendiri tanpa menyalurkan ke proses lain
Jawaban yang benar adalah :
ps --sort=-pcpu | head -n 6
Jadi, Anda dapat menentukan kolom tanpa mengganggu penyortiran.
Ex:
ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
Catatan untuk MAC OS X : Di Mac OS X, pstidak dikenali --sort, tetapi menawarkan -runtuk mengurutkan berdasarkan penggunaan CPU saat ini. Jadi, untuk Mac OS X Anda dapat menggunakan:
ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
bash(x2, atau headjuga) ps...
sort, yang kedua menunjukkan bagaimana menentukan kolom tanpa mengganggu penyortiran. Ketika menjelaskan sesuatu .. itu selalu lebih baik untuk ringkas dan menjelaskan satu per satu.
Tergantung pada kebutuhan Anda, Anda mungkin menemukan ini sedikit lebih mudah dibaca:
ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5
output sampel:
1.3 4 root [ksoftirqd/0]
1.1 9 root [ksoftirqd/1]
1.0 17606 nobody /usr/sbin/gmetad
1.0 13 root [ksoftirqd/2]
0.3 17401 nobody /usr/sbin/gmond
(isiannya adalah% CPU, PID, USER, COMMAND)
Saya tidak berpikir psapa yang Anda cari. Sudahkah Anda melihat output dari top?
Jika Anda memiliki GNU-Top, coba gunakan mode batch untuk memuntahkan daftar proses yang diurutkan berdasarkan penggunaan CPU dan menggunakan head / tail untuk mendapatkan 5 baris teratas (8 yang pertama adalah header):
top -b -n 1 | head -n 12 | tail -n 5
BSD top tampaknya berperilaku berbeda dan tidak memiliki mode non-interaktif, jadi gunakan salah satu pssolusi berbasis lainnya .
top -o cpu -n 5cara mencapai hal yang sama. Apakah ada yang tahu? Saya topberbeda dengan Anda top.
-odan -nmenetapkan berapa kali menyegarkan tampilan sebelum berhenti.
topTampaknya saya tidak memiliki mode batch, yang cukup membatasi. Harus ada beberapa cara pemipaan topke perintah lain. Saya akan melakukan riset.
topbekerja seperti yang dijelaskan sore ini. Tepuk tangan.
Satu liner tercepat yang saya temukan untuk ini (catatan 6 karena header menambahkan):
ps aux k-pcpu | head -6
Perhatikan bahwa versi ps saat ini memiliki kemampuan pengurutan di dalamnya, berdasarkan kode bidang (diberikan pada halaman manual ps). Kode bidang untuk penggunaan prosesor adalah "c". Anda dapat menggunakan --sort cdi akhir perintah ps misalnyaps aux --sort c
Ini akan menempatkan proses menggunakan cpu terbanyak di bagian bawah daftar. Membalik urutan daftar dengan menambahkan minus ke kode bidang yang digunakan untuk menyortir misalnyaps aux --sort -c
Untuk menambahkan poin ke jawaban berharga lainnya, saya lebih suka:
ps auxk-c | head -6
Ini juga mencetak header, yang bagus.
Berikut kini identik dengan --sortdan cmenentukan bidang penggunaan CPU (alias %cpu) untuk pengurutan, sedangkan -untuk pengurutan terbalik.
Anda dapat menambahkan lebih penentu dipisahkan oleh ,, specifier lain yang mungkin adalah: %mem, args, bsdstart, pid, gid, uid... yang dapat Anda temukan daftar lengkap di STANDAR specifier FORMAT bagian dari halaman manual. Sebagai contoh:
ps auxk -gid,-%mem | head -11
akan mencetak 10 proses dengan id grup tertinggi, diurutkan secara internal berdasarkan penggunaan memori.
Alat baris perintah psmemiliki opsi pengurutannya sendiri, jadi saya lebih suka:
$ ps -eo pcpu,args --sort=-%cpu | head
Anda dapat menambahkan kolom yang Anda inginkan. Lihat opsi apa yang tersedia melalui pshalaman manual.
$ man ps
toppada Mac OS X memiliki opsi mode logging dalam bentuk top -l numberOfSamples(yang tampaknya setara dengan mode batch GNU top). Namun, perlu untuk memiliki setidaknya dua sampel karena "sampel pertama yang ditampilkan akan menampilkan% CPU yang tidak valid untuk setiap proses, karena dihitung menggunakan delta antar sampel" ( man 1 top).
# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
Saya percaya cara paling sederhana untuk melihat 5 proses konsumsi cpu adalah,
ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5
Untuk melihat 5 proses memakan memori teratas adalah,
ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5
Dimana,
-e : Bendera ini digunakan untuk memilih semua proses
-o : Bendera ini digunakan untuk memformat sebagai yang ditentukan pengguna.
pid : Argumen ini digunakan untuk menampilkan pid
comm: Argumen ini digunakan untuk menunjukkan nama perintah saja. Untuk mendapatkan perintah penuh args, gunakan , cmdataucommand
%cpu: Argumen ini menunjukkan persentase pemanfaatan CPU dari proses dalam format "##. #". Di sini pcpujuga bisa digunakan.
%mem: Argumen ini menunjukkan rasio ukuran set penduduk proses dengan memori fisik pada mesin, dinyatakan sebagai persentase. Di sini pmemjuga bisa digunakan.
--sort: Tentukan urutan penyortiran. Setelah =itu -tanda digunakan untuk mengurutkan nilai tertinggi di atas di mana pilihan default yang +adalah daftar urutan yang meningkat numerik [yaitu 0 n].