Bagaimana membuat perintah ps menampilkan memori dalam mb, bukan kb?
11
Perintah Linux ps menunjukkan penggunaan memori yang berbeda seperti rss, ukuran dalam kb secara default. Apakah ada cara untuk menunjukkan dalam mb atau gb seperti ls -s --human-readablehalnya?
Kurangnya disebutkan dalam man psmenunjukkan kepada saya bahwa tidak ada opsi bawaan seperti itu.
Ulrich Schwarz
Jawaban:
20
AFAIK Anda tidak dapat mencapainya hanya dengan psperintah murni dengan opsi. Namun Anda dapat menggunakan beberapa pemroses teks seperti awkdan membuatnya untuk melakukan apa yang Anda inginkan:
Ini mengambil hasil dari psdan kemudian untuk setiap baris kecuali yang pertama itu mengganti kolom ke-5 yang di KB normal, ke MB menambahkan akhiran M.
Anda dapat membuatnya menjadi alias dan menyimpannya dalam file .bashrc sehingga Anda dapat memanggilnya dengan sesuatu seperti myps.
Sebagian besar orang bertanya bagaimana mempertahankan format atau menggunakan unit lain dan presisi.
Untuk versi sederhana, Anda dapat menggunakan column -tfilter keluaran:
Namun ini tidak mengenali spasi di kolom terakhir dengan benar. Sayangnya kita harus berurusan dengan pemformatan teks dan menyiapkan string format kita sendiri dalam printfformat seperti.
NR==1kondisi hanya untuk baris pertama (tajuk). Kami menggunakan output ps asli untuk menentukan di mana COMMAND mulai:
o=$0 menyimpan seluruh baris yang belum dimodifikasi sehingga kita dapat menggunakannya nanti
a=match($0,$11) menemukan lokasi bidang ke-11 (yang seharusnya berada di tempat kolom PERINTAH mulai dalam output asli)
NR>1untuk baris berikut (data). Kami mengubah bidang ke-5:
$5=int(10*$5/1024)/10"M" mengubah nilai menjadi Megabita dengan satu tempat desimal dan menambahkan akhiran "M".
printf menampilkan semua bidang dalam rasa seperti kolom:
%-10sberarti suntuk string, 10untuk lebar 10 karakter, -untuk rata kiri
%8sberarti suntuk string, 8untuk lebar 8 karakter, dan karena tidak ada -output dari bidang ini disejajarkan dengan benar.
substr(o, a)mengambil substring dari garis asli (karenanya odisimpan sebelumnya) mulai dari posisi yang adihitung dalam kondisi sebelumnya, sehingga kita dapat memiliki output perintah yang ditampilkan dengan spasi dipertahankan.
man ps
menunjukkan kepada saya bahwa tidak ada opsi bawaan seperti itu.Jawaban:
AFAIK Anda tidak dapat mencapainya hanya dengan
ps
perintah murni dengan opsi. Namun Anda dapat menggunakan beberapa pemroses teks sepertiawk
dan membuatnya untuk melakukan apa yang Anda inginkan:Ini mengambil hasil dari
ps
dan kemudian untuk setiap baris kecuali yang pertama itu mengganti kolom ke-5 yang di KB normal, ke MB menambahkan akhiran M.Anda dapat membuatnya menjadi alias dan menyimpannya dalam file .bashrc sehingga Anda dapat memanggilnya dengan sesuatu seperti
myps
.Sebagian besar orang bertanya bagaimana mempertahankan format atau menggunakan unit lain dan presisi.
Untuk versi sederhana, Anda dapat menggunakan
column -t
filter keluaran:Namun ini tidak mengenali spasi di kolom terakhir dengan benar. Sayangnya kita harus berurusan dengan pemformatan teks dan menyiapkan string format kita sendiri dalam
printf
format seperti.Penjelasan:
NR==1
kondisi hanya untuk baris pertama (tajuk). Kami menggunakan output ps asli untuk menentukan di mana COMMAND mulai:o=$0
menyimpan seluruh baris yang belum dimodifikasi sehingga kita dapat menggunakannya nantia=match($0,$11)
menemukan lokasi bidang ke-11 (yang seharusnya berada di tempat kolom PERINTAH mulai dalam output asli)NR>1
untuk baris berikut (data). Kami mengubah bidang ke-5:$5=int(10*$5/1024)/10"M"
mengubah nilai menjadi Megabita dengan satu tempat desimal dan menambahkan akhiran "M".%-10s
berartis
untuk string,10
untuk lebar 10 karakter,-
untuk rata kiri%8s
berartis
untuk string,8
untuk lebar 8 karakter, dan karena tidak ada-
output dari bidang ini disejajarkan dengan benar.substr(o, a)
mengambil substring dari garis asli (karenanyao
disimpan sebelumnya) mulai dari posisi yanga
dihitung dalam kondisi sebelumnya, sehingga kita dapat memiliki output perintah yang ditampilkan dengan spasi dipertahankan.sumber
1.23GB
):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
ps
format? Tab sepenuhnya dilepaskan denganawk