Jawaban:
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:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
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:
ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}' | column -t
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.
ps afu | awk 'NR==1 {o=$0; a=match($0,$11);}; NR>1 {o=$0;$5=int(10*$5/1024)/10"M";}{ printf "%-8s %6s %-5s %-5s %9s %9s %-8s %-4s %-6s %-5s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, substr(o, a);}'
Penjelasan:
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 nantia=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".%-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.1.23GB):ps aux | awk '{$5=int(100 * $5/1024/1024)/100"GB";}{ print;}'
psformat? Tab sepenuhnya dilepaskan denganawk
man psmenunjukkan kepada saya bahwa tidak ada opsi bawaan seperti itu.