Estou digitando um shell script para descobrir a memória física total em algumas caixas de linux do RHEL.
Antes de tudo, quero enfatizar que estou interessado na memória física total reconhecida pelo kernel, não apenas na memória disponível . Portanto, evite respostas sugerindo ler / proc / meminfo ou usar os comandos free , top ou sar - Em todos esses casos, seus valores de " memória total " significam valores de " memória disponível ".
O primeiro pensamento foi ler as mensagens do kernel de inicialização:
Memory: 61861540k/63438844k available (2577k kernel code, 1042516k reserved, 1305k data, 212k init)
Mas em algumas caixas Linux, devido ao uso do software PowerPath da EMC2 e às mensagens de inicialização inundadas na inicialização do kernel, essa mensagem útil do kernel de inicialização não está disponível, nem mesmo no arquivo / var / log / dmesg .
A segunda opção foi o comando dmidecode (sou avisado contra a possível incompatibilidade entre a RAM reconhecida pelo kernel e a RAM real devido às limitações de alguns kernels e arquiteturas mais antigos). A opção --memory simplifica o script, mas percebi que versões mais antigas desse comando não têm opção --memory .
Minha última chance foi o comando getconf . Ele relata o tamanho da página da memória, mas não o número total de páginas físicas - a variável de sistema _PHYS_PAGES parece ser a página física disponível, e não o total de páginas físicas.
# getconf -a | grep PAGES PAGESIZE 4096 _AVPHYS_PAGES 1049978 _PHYS_PAGES 15466409
Minha pergunta: Existe outra maneira de obter a quantidade total de memória física, adequada para ser analisada por um script de shell?