it-swarm-es.com

¿Cómo encontrar qué procesos están tomando toda la memoria?

Estoy buscando algo como lo mejor es el uso de la CPU. ¿Hay un argumento de línea de comando para top que haga esto? Actualmente, mi memoria está tan llena que incluso 'man top' falla sin memoria :)

87
ripper234

Desde adentro top puedes probar lo siguiente:

  • Prensa SHIFT+f
  • Presione la letra correspondiente a% MEM
  • Prensa ENTER

También puedes probar:

$ ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

Esto dará los 5 procesos principales por uso de memoria.

107
Steven D

Si lo tiene instalado, me gusta htop una vez que lo inicie, puede presionar f6down arrow (a MEM%), enter ordenar por memoria.

11
xenoterracide

Una vez que top comience, presione F para cambiar a la pantalla del campo de clasificación. Elija uno de los campos enumerados presionando la tecla que aparece a la izquierda; probablemente quieras N para MEM%

7
Michael Mrozek

En Solaris, el comando que necesitaría es:

prstat -a -s size

Esto enumerará todos los procesos en orden de tamaño de imagen de proceso descendente. Tenga en cuenta que este último se basa en la memoria comprometida con el proceso por el sistema operativo, no en su uso de memoria física residente.

Supuestamente hay versiones de "top" disponibles para Solaris, pero estas no son parte de la instalación estándar.

6
Joel Hoff

Una buena alternativa a top es htop. Compruébalo, es mucho más fácil de usar que la parte superior normal.

5
Klark

Se puede lograr de múltiples maneras, mi favorita es:

La forma PS:

  1. [[email protected] ~]$ ps -eo pid,cmd,%cpu,%mem --sort=-%mem

    Dónde,

    • -e: para seleccionar todo el proceso
    • -o: para aplicar al formato de salida
    • pid, cmd, %cpu, %mem: Formato de salida en el orden exacto. Aquí, pcpu y pmem se pueden usar en lugar de %cpu y %mem.
    • Pero lamentablemente (no sé por qué) no funciona en alguna máquina (Oracle Linux) y alguna máquina más antigua. Puede usar las siguientes alternativas similares.
  2. [[email protected] ~]$ ps -eo pid,cmd,%cpu,%mem --sort -rss

    Dónde,

    • -rss: tamaño de conjunto residente, la memoria física no intercambiada que una tarea ha utilizado
  3. [[email protected] ~]$ ps --cols 120 aux --sort -rss

    Dónde,

    • --cols 100: para especificar el ancho de columna de la salida, ya que a veces cmd se alarga mucho. Esto no es necesario si no desea comandos restringidos con argumentos.
    • aux: para ver todos los procesos en el sistema usando la sintaxis BSD

La forma superior:

[[email protected] ~]$ top -b -o +%MEM

Dónde,

  • -b: para usar el modo top como batch.
  • -o: para anular el nombre del campo de clasificación seguido de un nombre de campo %MEM

Y siempre puede usar head y/o tail para controlar la salida.

1
muhammad

Este comando identificará los principales procesos que consumen memoria:

ps -A --sort -rss -o pid,pmem:40,cmd:500 | head -n 6 | tr -s " " ";z"
1
user90191

Globalmente: Siempre se recomienda utilizar una herramienta analizadora de registros para registrar registros del historial como Splunk, ELK, etc. Para que al usar el lenguaje de consulta pueda obtener fácilmente los PID y su uso por parte de la CPU y la memoria.

EN EL NIVEL DEL SERVIDOR/SO: Desde arriba puede probar lo siguiente:

 Press SHIFT+M  ---> This will give you a process which takes more memory in descending order.

También puedes probar:

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10

Esto dará los 10 procesos principales por uso de memoria. También puede usar la utilidad vmstat para encontrar el uso de RAM al mismo tiempo, no para el historial).

0
Santosh Garole

Puedes probar ps aux --sort -rss | head o ps aux | sort -nk +4 | tail

0
David Okwii