如何从 Linux 终端获取给定 PID 使用的原始字节数,无论发行版如何?

如何从 Linux 终端获取给定 PID 使用的原始字节数,无论发行版如何?

我正在尝试通过 CLI 获取字节数,例如123456,对应于给定进程的 RAM 使用量(基于其 PID)。它必须在所有 Linux 发行版上都运行,无需任何特殊软件。没有格式或“kB”或额外信息。只是一个整数值作为输出。

像往常一样,网络上充斥着大量噪音而没有实际有用信息的文章。

答案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命令检查它的手册

相关内容