Ich versuche, über die CLI die Anzahl der Bytes abzurufen, die 123456
der 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 /proc
Dateisystem finden Sie unterLinux-Kernel-Dokumentation
※ Zur ps
Befehlsprüfungsein Handbuch