it-swarm-pt.tech

Como descobrir quais processos estão consumindo toda a memória?

Estou procurando algo como top é o uso da CPU. Existe um argumento de linha de comando para o top que faz isso? Atualmente, minha memória está tão cheia que até mesmo 'man top' falha com falta de memória :)

87
ripper234

De dentro top, você pode tentar o seguinte:

  • Pressione SHIFT+f
  • Pressione a letra correspondente a% MEM
  • Pressione ENTER

Você também pode tentar:

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

Isso fornecerá os 5 principais processos por uso de memória.

107
Steven D

Se você o tiver instalado, eu gosto de htop uma vez iniciado, você pode pressionar f6down arrow (para MEM%), enter para ordenar por memória.

11
xenoterracide

Depois que top for iniciado, pressione F para alternar para a tela do campo de classificação. Escolha um dos campos listados pressionando a tecla listada à esquerda; você provavelmente quer N para MEM%

7
Michael Mrozek

No Solaris, o comando que você precisa é:

prstat -a -s size

Isso listará todos os processos em ordem decrescente do tamanho da imagem do processo. Observe que o último é baseado na memória comprometida com o processo pelo sistema operacional, não no uso de memória física residente.

Supostamente, há versões de "top" disponíveis para Solaris, mas elas não fazem parte da instalação padrão.

6
Joel Hoff

Uma boa alternativa para top é htop. Verifique, é muito mais amigável do que o normal.

5
Klark

Pode ser alcançado de várias maneiras. O meu favorito é:

A maneira PS:

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

    Onde,

    • -e: para selecionar todo o processo
    • -o: para aplicar ao formato de saída
    • pid, cmd, %cpu, %mem: Formato de saída na ordem exata. Aqui, pcpu e pmem podem ser usados ​​em vez de %cpu e %mem.
    • Mas, infelizmente (não sei o porquê) não funciona em algumas máquinas (Oracle Linux) e em algumas máquinas mais antigas. Você pode usar as seguintes alternativas semelhantes.
  2. [[email protected] ~]$ ps -eo pid,cmd,%cpu,%mem --sort -rss

    Onde,

    • -rss: tamanho do conjunto residente, a memória física não trocada que uma tarefa usou
  3. [[email protected] ~]$ ps --cols 120 aux --sort -rss

    Onde,

    • --cols 100: para especificar a largura da coluna da saída, pois às vezes cmd fica muito longo. Isso não é necessário se você não quiser comandos reduzidos com argumentos.
    • aux: para ver todos os processos no sistema usando a sintaxe BSD

O caminho principal:

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

Onde,

  • -b: para usar o modo top como batch.
  • -o: para substituir a classificação nomedocampo seguido por um nomedocampo %MEM

E você sempre pode usar head e/ou tail para controlar a saída.

1
muhammad

Este comando identificará os principais processos que consomem memória:

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

Globalmente: Sempre é recomendável usar uma ferramenta de analisador de logs para registrar logs de histórico como Splunk, ELK etc.

NO NÍVEL DO SERVIDOR/OS: De dentro da parte superior, você pode tentar o seguinte:

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

Você também pode tentar:

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

Isso fornecerá os 10 principais processos por uso de memória. Além disso, você pode usar o utilitário vmstat para encontrar o uso RAM ao mesmo tempo, não para o histórico.

0
Santosh Garole

Podes tentar ps aux --sort -rss | head ou ps aux | sort -nk +4 | tail

0
David Okwii