無論發行版如何,如何從 Linux 終端機取得給定 PID 正在使用的原始位元組數?

無論發行版如何,如何從 Linux 終端機取得給定 PID 正在使用的原始位元組數?

我正在嘗試透過 CLI 獲取位元組數,例如123456,對應於給定進程基於 PID 的 RAM 使用情況。它必須無需任何特殊軟體即可在所有 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命令檢查它的手冊

相關內容