¿Cómo monitorear la memoria consumida por un proceso?

16

Tengo un proceso que me gustaría ver cuánta memoria consume mientras se está ejecutando.

En este momento hago esto:

ps faux | grep casper

Pero eso solo me da la información de ese momento. Sería bueno ver que ese valor cambia a medida que avanza el script.

¿De alguna manera puedo hacer esto?

Hommer Smith
fuente

Respuestas:

15

Método 1

Correr:

top

Verifique el PID del programa (primera columna), luego ejecute:

top -p PID

Método 2

Pegue esto en la terminal o guárdelo como mem_usage.sh y ejecútelo desde la terminal.

#! /bin/bash
while :
do
    clear
    ps faux | grep casper
    sleep 1s
done
Julian Stirling
fuente
1
¿Cómo puedes cambiarlo de mostrar%? Fuera de interés :-)
Wilf
Obtengo esto cuando ejecuto el script: bash: ./memory_usage.sh: bin / bash: bad interpreter: No such file or directory
Hommer Smith
¡Bah! ¡Lo he editado! Debería haberlo comprobado correctamente antes de publicar. La primera línea debería decir desde dónde ejecutarlo / bin / bash (tenía bin / bash por lo que estaba comprobando localmente en una carpeta llamada bin para bash)
Julian Stirling
1
@ wilf ps faux | grep casper | awk '{print $ 11} {print $ 6}' Eso debería proporcionarle en una línea el nombre del programa y luego el tamaño de memoria real en kB.
Julian Stirling
6

Para monitorear solo su proceso, puede verificar / proc / PID / status o / proc / PID / statm.

Acerca de / proc / PID / statm:

Después de hacerlo cat /proc/PID/statm, deberías ver esto:

611450 185001 883 18 0 593431 0

Explicacion:

  1. tamaño: - tamaño total del programa (611450 X 4096/1024 = 2445800kB = 2388M)
  2. residente: - tamaño del conjunto residente (185001 X 4096/1024 = 740004kB = 722M)
  3. compartir: - páginas compartidas (883 X 4096 = 3532)
  4. trs: - texto (código) (18 X 4096/1024 = 72kB = VmExe)
  5. drs: - datos / pila
  6. lrs: - biblioteca (593431 X 4096/1024 = 2373724kB = VmData + VmStk)
  7. dt: - páginas sucias

También puede registrar la actividad de memoria para su proceso haciendo un bucle usando date y cat.

yilmi
fuente
4

puedes usar 'top'

man top

Este programa le permite ordenar el uso de recursos por, entre otros, RSS, VSZ, CPU, etc. Es muy útil.

Alternativamente, para un desglose más detallado del uso de memoria, intente 'pmap'

man pmap

Ejemplo de uso:

pmap -x 1234

salud

Carolina del Sur.

queso suizo
fuente
1
Con pmap -x PID, ¿te refieres a un uso increíblemente detallado :-)
Wilf
de hecho - nunca puede tener suficientes detalles :)
swisscheese
1
En el mío (Ubuntu 16.04.5 LTS) "pmap -x" con el PID no muestra nada más que el PID y el comando. -X hace lo mismo.
orden
2

Abra el Monitor del sistema y vaya a la Processespestaña:

Wilf
fuente
1

Intenta:

watch 'ps faux | grep -v grep | grep casper'

También puede cambiar el intervalo de actualización utilizando el --interval <seconds>parámetro.

Martin Dvorak
fuente
1
No necesita el -v grep si cambia el último a grep [c] asper. Eso coincide con casper pero no con sí mismo.
Wudang