Wie erhält man unabhängig von der Distribution die Rohzahl der von einer bestimmten PID verwendeten Bytes vom Linux-Terminal?

Wie erhält man unabhängig von der Distribution die Rohzahl der von einer bestimmten PID verwendeten Bytes vom Linux-Terminal?

Ich versuche, über die CLI die Anzahl der Bytes abzurufen, die 123456der RAM-Nutzung eines bestimmten Prozesses basierend auf seiner PID entspricht. Dies muss ohne spezielle Software und auf allen Linux-Distributionen funktionieren. Keine Formatierung oder „kB“ oder zusätzliche Informationen. Nur ein ganzzahliger Wert als Ausgabe.

Wie immer ist das Internet voller Artikel mit viel Lärm, aber ohne wirklich nützliche Informationen.

Antwort1

Versuchen Sie eine dieser Methoden:

# 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

※ Informationen zum /procDateisystem finden Sie unterLinux-Kernel-Dokumentation

※ Zur psBefehlsprüfungsein Handbuch

verwandte Informationen