it-swarm-id.com

Tampilkan lima proses konsumsi CPU teratas dengan `ps`

Bagaimana cara menunjukkan lima proses memakan CPU dengan ps?

115
PlanasB

Mengapa menggunakan ps ketika Anda dapat melakukannya dengan mudah dengan perintah top?

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"
112
Boban P.

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, ps tidak mengenali --sort, tetapi menawarkan -r untuk 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
94
Facundo Victor

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)

28

Saya tidak berpikir ps adalah yang Anda cari. Sudahkah Anda melihat output dari top?

Jika Anda memiliki GNU-Top, coba gunakan mode batch itu untuk mengeluarkan 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 dari solusi berbasis ps lainnya.

24
Caleb

Satu liner tercepat yang saya temukan untuk ini (catatan 6 karena header menambahkan):

ps aux k-pcpu | head -6
6
Nestor Urquiza

Perhatikan bahwa versi ps saat ini memiliki kemampuan penyortiran di dalamnya, berdasarkan kode bidang (diberikan di halaman manual ps). Kode bidang untuk penggunaan prosesor adalah "c". Kamu bisa menggunakan --sort c pada akhir perintah ps mis. ps 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 mengurutkan mis. ps aux --sort -c

5
Cian D

Untuk menambahkan poin pada jawaban berharga lainnya, saya lebih suka:

ps auxk-c | head -6

Ini juga mencetak header, yang bagus.

Di sini k identik dengan --sort dan c menentukan penggunaan CPU (alias %cpu) bidang untuk disortir, sementara - adalah untuk jenis terbalik.

Anda dapat menambahkan lebih banyak specifier yang dipisahkan oleh ,, penentu lain yang mungkin adalah: %mem, args, bsdstart, pid, gid, uid ... yang dapat Anda temukan daftar lengkapnya di SPESIFIKASI FORMAT STANDAR 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.

4
2i3r

Alat baris perintah ps memiliki opsi pengurutannya sendiri, jadi saya lebih suka:

$ ps -eo pcpu,args --sort=-%cpu | head

Anda dapat menambahkan kolom yang Anda inginkan. Lihat opsi lain apa saja yang tersedia melalui halaman manual ps.

$ man ps

Saya percaya cara paling sederhana untuk melihat proses konsumsi 5 cpu teratas adalah,

ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5

Untuk melihat proses memakan 5 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 gunakan args, cmd atau command

%cpu: Argumen ini menunjukkan persentase pemanfaatan CPU dari proses dalam format "##. #". Di sini pcpu juga dapat digunakan.

%mem: Argumen ini menunjukkan rasio ukuran set penduduk proses dengan memori fisik pada mesin, dinyatakan sebagai persentase. Di sini pmem juga dapat digunakan.

--sort: Tentukan urutan penyortiran. Setelah = the - tanda digunakan untuk mengurutkan nilai tertinggi di atas di mana opsi default yaitu + adalah daftar peningkatan urutan numerik [yaitu, 0 ke n].

0
muhammad

top pada Mac OS X memiliki opsi mode logging dalam bentuk top -l numberOfSamples (yang tampaknya setara dengan mode batch GNU top). Namun, perlu memiliki setidaknya dua sampel karena "sampel pertama ditampilkan akan menampilkan% CPU 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
0
ulf

top akan menampilkan apa yang menggunakan CPU Anda. Jika Anda menginstalnya, htop memungkinkan Anda mengontrol lebih banyak hal, termasuk memfilter menurut — dalam kasus Anda — CPU.

0
PSN