Sto digitando uno script di shell per scoprire la memoria fisica totale in alcune scatole di RHEL linux.
Prima di tutto voglio sottolineare che mi interessa la memoria fisica totale riconosciuta dal kernel, non solo la memoria disponibile . Pertanto, per favore, evita le risposte che suggeriscono di leggere / proc / meminfo o di usare i comandi free , top o sar - In tutti questi casi, i loro valori di " memoria totale " significano quelli di " memoria disponibile ".
Il primo pensiero è stato leggere i messaggi del kernel di avvio:
Memory: 61861540k/63438844k available (2577k kernel code, 1042516k reserved, 1305k data, 212k init)
Ma in alcune macchine Linux, a causa dell'uso del software PowerPath di EMC2 e dei suoi messaggi di avvio inondati all'avvio del kernel, quell'utile messaggio di avvio del kernel non è disponibile, nemmeno nel file / var / log / dmesg .
La seconda opzione era il comando dmidecode (sono avvisato del possibile disallineamento della RAM riconosciuta dal kernel e della RAM reale a causa delle limitazioni di alcuni kernel e architetture meno recenti). L'opzione --memory semplifica lo script ma mi sono reso conto che le versioni precedenti di quel comando non hanno l' opzione --memory .
La mia ultima possibilità è stata il comando getconf . Riporta la dimensione della pagina di memoria, ma non il numero totale di pagine fisiche - la variabile di sistema _PHYS_PAGES sembra essere le pagine fisiche disponibili, non le pagine fisiche totali.
# getconf -a | PAGINE grep PAGINA 4096 _AVPHYS_PAGES 1049978 _PHYS_PAGES 15466409
La mia domanda: esiste un altro modo per ottenere la quantità totale di memoria fisica, adatta per essere analizzata da uno script di shell?