¿Cómo obtener la cantidad bruta de bytes que usa un PID determinado desde la terminal de Linux, independientemente de la distribución?

¿Cómo obtener la cantidad bruta de bytes que usa un PID determinado desde la terminal de Linux, independientemente de la distribución?

Estoy intentando obtener mediante CLI la cantidad de bytes, como 123456, correspondientes al uso de RAM de un proceso determinado en función de su PID. Debe funcionar sin ningún software especial y en todas las distribuciones de Linux. Sin formato ni "kB" ni información adicional. Solo un valor entero como salida.

Como siempre, la Web está llena de artículos con mucho ruido pero sin información útil real.

Respuesta1

Pruebe uno de estos métodos:

# 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

※ Para /procel sistema de archivos consultedocumentación del núcleo de Linux

※ Para psverificación de comandosu manual

información relacionada