Linuxのpsコマンドは、rssのようなさまざまなメモリ使用量をデフォルトで表示します。 ls -s --human-readable
のようにmbまたはgbで表示する方法はありますか?
申し訳ありませんが、オプション付きの純粋なps
コマンドだけでは実現できません。ただし、awk
などの一部のテキストプロセッサを使用して、必要な処理を行うことができます。
_ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}'
_
これはps
からの結果であり、最初の行を除くすべての行で、通常はKBである5番目の列を置き換え、MBにMサフィックスを追加します。
エイリアスにして。bashrcファイルに保存すると、myps
のように呼び出すことができます。
ほとんどの人は、フォーマットを保持する方法、または他の単位と精度を使用する方法を尋ねています。
単純なバージョンでは、_column -t
_出力フィルターを使用できます。
_ps afu | awk 'NR>1 {$5=int($5/1024)"M";}{ print;}' | column -t
_
ただし、これは最後の列のスペースを正しく認識しません。残念ながら、テキストのフォーマットを処理し、printf
のような形式で独自のフォーマット文字列を準備する必要があります。
_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);}'
_
説明:
NR==1
_条件は、最初の行のみ(ヘッダー)です。オリジナルのps出力を使用して、COMMANDがどこから始まっているかを判別します。o=$0
_は、後で使用できるように、変更されていない行全体を格納しますa=match($0,$11)
は、11番目のフィールドの位置を検索します(これは、COMMAND列が元の出力で開始する場所でなければなりません)NR>1
_は次の行(データ)用です。 5番目のフィールドを変更します:$5=int(10*$5/1024)/10"M"
は、値を小数点以下1桁のメガバイトに変更し、接尾辞「M」を追加します。%-10s
_は、文字列の場合はs
、10文字幅の場合は_10
_、左揃えの場合は_-
_を意味します%8s
_は、文字列の場合はs
、8文字幅の場合は_8
_を意味します。このフィールドの_-
_出力がないため、右揃えになります。substr(o, a)
は、前の条件で計算された位置o
から始まる元の行のサブストリング(したがって、以前に格納されたa
)を取得するため、スペースを保持したままコマンド出力を表示できます。