Estou tentando recuperar a memória usada (RAM) em porcentagem usando comandos do Linux. Meu cpanel mostra a memória usada, que eu preciso exibir em uma página específica.
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. Não sei como analisar essas informações ou se existe algum comando diferente para obter a memória usada em porcentagem.
free | grep Mem | awk '{print $4/$2 * 100.0}'
$ 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}'
Respostas:
Aqui está um exemplo de saída gratuita:
A primeira linha de números (
Mem:
) listatotal
memóriaused
memóriafree
memóriashared
buffers
cached
)Nesta linha
used
inclui os buffers e cache e isso afeta livre. Essa não é a sua memória livre "verdadeira", porque o sistema fará o dump do cache, se necessário, para satisfazer solicitações 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 de memória swap. Não há buffer ou cache para troca, pois não faria sentido colocar essas coisas em um disco físico.Para gerar a memória usada (menos buffers e cache), você pode usar um comando como:
Isso pega a terceira linha e divide usado / total * 100.
E para memória livre:
fonte
free
,-/+ buffers/cache
é completamente omitido intencionalmente, e o valor mostrado naused
coluna agora exclui os buffers e o cache por padrão. Veja aqui: bugzilla.redhat.com/show_bug.cgi?id=1158828Vou mencionar como analisar as informações sob
free
comando. Para encontrar a porcentagem, você pode usar como sugerido nas outras 2 respostas.Isto está claramente explicado aqui . Eu tentaria explicar pelo que tenho no meu sistema.
Agora, vamos ver o que os vários números realmente representam.
Linha 1
Linha 2
Como calcular os valores 696 e 7173 obtidos na Linha2?
Total usado ( 4402 ) - RAM total do buffer ( 208 ) - RAM total para armazenamento em cache ( 3497 ) deve constituir a RAM real usada no sistema. Ele me retorna 697, que é a saída real de RAM usada na segunda linha.
Agora, total disponível ( 7869 ) - reais usados ( 696 ) deve dar-lhe a memória livre que é 7173 , neste caso, que é também tem como saída na segunda linha.
fonte
Embora seja uma duplicata, como apontado por @szboardstretcher, minha preferência das soluções (na pergunta original) é a abaixo, especialmente porque você deseja analisar uma página da web.
Saída:
fonte
used: 96.00%, buffers: 26.53%awk: (FILENAME=- FNR=4) fatal: division by zero attempted
$ cat /etc/issue CentOS release 6.7 (Final)
$ 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}' used: 12.91%, buffers: 96.24%awk: (FILENAME=- FNR=4) fatal: division by zero attempted $ free total used free shared buffers cached Mem: 15429704 1991416 13438288 164 151556 1259584 -/+ buffers/cache: 580276 14849428 Swap: 0 0 0
Adiciona uma nova linha após o número da troca
fonte
Para até o CentOS 7, você pode tentar
para ver o uso real da memória pelos processos.
fonte