ディストリビューションに関係なく、Linux ターミナルから特定の PID が使用している生のバイト数を取得するにはどうすればよいですか?

ディストリビューションに関係なく、Linux ターミナルから特定の PID が使用している生のバイト数を取得するにはどうすればよいですか?

私は、PID に基づいて、特定のプロセスの RAM 使用量に対応するバイト数 ( など) を CLI で取得しようとしています123456。特別なソフトウェアを使わずに、すべての Linux ディストリビューションで動作する必要があります。フォーマットや「kB」などの追加情報はありません。出力は整数値のみです。

いつものように、Web にはノイズが多く、実際に役立つ情報がない記事が溢れています。

答え1

次のいずれかの方法を試してください。

# process id
pid=$$
# memory page size
psz=$(grep -m1 KernelPageSize /proc/$pid/smaps |tr -d -c [0-9])
# assume by “RAM usage” OP wants “resident size”
printf '
1. with “ps” command    : %d
2. from /proc/pid/status: %d
3. from /proc/pid/statm : %d
4. from /proc/pid/stat  : %d
' $( ps -p $pid ho rsz ) \
  $( grep -m1 VmRSS /proc/$pid/status |tr -d -c [0-9] ) \
  $( read -a s < /proc/$pid/statm; echo $(( ${s[1]} * $psz )) ) \
  $( read -a s < /proc/$pid/stat; echo $(( ${s[23]} * $psz )) )
1. with “ps” command    : 12160
2. from /proc/pid/status: 12160
3. from /proc/pid/statm : 12160
4. from /proc/pid/stat  : 12160

/procファイルシステムについてはLinux カーネルドキュメント

psコマンド確認用マニュアル

関連情報