Jawaban:
Mengapa menggunakan ps
ketika Anda bisa melakukannya dengan mudah dengan top
perintah?
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
top
sebenarnya bekerja.
top
membaca 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, ps
tidak dikenali --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
bash
(x2, atau head
juga) 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 ps
apa 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 ps
solusi berbasis lainnya .
top -o cpu -n 5
cara mencapai hal yang sama. Apakah ada yang tahu? Saya top
berbeda dengan Anda top
.
-o
dan -n
menetapkan berapa kali menyegarkan tampilan sebelum berhenti.
top
Tampaknya saya tidak memiliki mode batch, yang cukup membatasi. Harus ada beberapa cara pemipaan top
ke perintah lain. Saya akan melakukan riset.
top
bekerja 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 c
di 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 k
ini identik dengan --sort
dan c
menentukan 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 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 apa yang tersedia melalui ps
halaman manual.
$ man ps
top
pada 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 , cmd
ataucommand
%cpu
: Argumen ini menunjukkan persentase pemanfaatan CPU dari proses dalam format "##. #". Di sini pcpu
juga bisa digunakan.
%mem
: Argumen ini menunjukkan rasio ukuran set penduduk proses dengan memori fisik pada mesin, dinyatakan sebagai persentase. Di sini pmem
juga 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].