Como obter memória usada (RAM usada) usando o comando do Linux?

27

Estou tentando recuperar a memória usada (RAM) em porcentagem usando os comandos do Linux. Meu cpanel mostra a memória usada que eu preciso para exibir em uma determinada página da web.

Nos fóruns, descobri que a memória correta pode ser encontrada a partir do seguinte:

free -m

Resultado:

-/+ buffers/cache:        492       1555

- / + buffers / cache: contém o uso correto da memória. Eu não sei como analisar essa informação ou se existe algum comando diferente para obter a memória usada em porcentagem.

    
por codelogn 26.08.2014 / 22:24

5 respostas

31

Aqui está um exemplo de saída grátis:

% free
             total       used       free     shared    buffers     cached
Mem:      24683904   20746840    3937064     254920    1072508   13894892
-/+ buffers/cache:    5779440   18904464
Swap:      4194236        136    4194100

A primeira linha de números ( Mem: ) lista

  • total memory
  • used memory
  • free memory
  • uso de shared
  • uso de buffers
  • caches de sistema de arquivos de uso ( cached )

Nesta linha, used inclui os buffers e cache e isso impacta gratuitamente. Esta não é a sua "verdadeira" memória livre, porque o sistema irá despejar o cache, se necessário, para satisfazer os pedidos de alocação.

A próxima linha ( -/+ buffers/cache: ) nos fornece a memória real usada e livre como se não houvesse buffers ou cache.

A linha final ( Swap ) fornece o uso da memória swap. Não há buffer ou cache para swap, pois não faria sentido colocar essas coisas em um disco físico.

Para enviar a memória usada (menos buffers e cache) você pode usar um comando como:

% free | awk 'FNR == 3 {print $3/($3+$4)*100}'
23.8521

Isso pega a terceira linha e divide usado / total * 100.

E para memória livre:

% free | awk 'FNR == 3 {print $4/($3+$4)*100}' 
76.0657
    
por 26.08.2014 / 22:38
10

Vou mencionar como analisar as informações no comando free . Para encontrar a porcentagem, você pode usar como sugerido nas outras duas respostas.

Isso é claramente explicado aqui . Eu tentaria explicar do que tenho no meu sistema.

free -m
             total       used       free     shared    buffers     cached
Mem:          7869       4402       3466          0        208       3497
-/+ buffers/cache:        696       7173
Swap:         3999        216       3783

Agora, vamos ver o que os vários números realmente representam.

Linha1

  • 7869 Indica memória / RAM física disponível para minha máquina.
  • 4402 Indica memória / RAM usada pelo meu sistema.
  • 3466 Indica o total de RAM livre e disponível para novo processo a ser executado.
  • 0 Indica memória compartilhada. Esta coluna é obsoleta e pode ser removida no futuro       lançamentos de graça.
  • 208 Indica o total de RAM armazenada em buffer por diferentes aplicativos no Linux.
  • 3497 Indica o total de RAM usado para o cache de dados para fins futuros.

Linha2

-/+ buffers/cache:        696       7173

Como calcular os valores 696 e 7173 obtidos na Linha2?

Total usado ( 4402 ) - RAM total do buffer ( 208 ) - RAM total para caching ( 3497 ) deve constituir a RAM usada real no sistema. Ele me retorna 697 , que é a saída real RAM usada na segunda linha.

Agora, Total Disponível ( 7869 ) - Uso Real ( 696 ) deve dar a você o > memória livre que é 7173 neste caso que também é obtido como saída na segunda linha.

    
por 26.08.2014 / 22:40
6

Apesar de um duplicar como indicado por @ szboardstretcher, minha preferência pelas soluções (na pergunta original) é a seguinte, especialmente porque você quer analisar em uma página da Web.

$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'

Saída:

used: 82.68%, buffers: 42.81%, swap: 1.27%
    
por 26.08.2014 / 22:46
1
free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%\n"), $3/$2*100}' 

Adiciona uma nova linha após o número de troca

    
por 09.09.2016 / 18:03
0

Para upto CentOS 7 Você pode tentar

cat /proc/meminfo 

para ver o uso real da memória por processos.

    
por 18.05.2018 / 01:42