Lectura de memoria del sistema legible por humanos desde la CLI

15

En OS X, obtengo una buena lectura de memoria del sistema legible para humanos de esta manera:

printf -v system_memory \
          "$(system_profiler SPHardwareDataType \
             | awk -F ': ' '/^ +Memory: /{print $2}')"
echo "$system_memory"

imprime el amistoso:

4 GB

Aunque esto en Linux es correcto:

lshw -class memory

produce:

size: 4096MiB

Necesito analizarlo dolorosamente e intentar convertirlo en una cuerda tan bonita como la de arriba.

¿Estoy usando el comando incorrecto?

Robottinosino
fuente
55
"Necesito analizarlo dolorosamente" ... ¿Esa gran cosa fea para osx no es dolorosa? :-)
Patrick
@Patrick: ¡No me gusta OS X cuando lo comparo con Linux!
Robottinosino

Respuestas:

32

Si eso es todo lo que necesitas, solo usa free:

$ free -h | gawk  '/Mem:/{print $2}'
7.8G

freedevuelve información de la memoria, el -hinterruptor le dice que imprima en formato legible para humanos.

terdon
fuente
1
No sabía que freetenía un -hinterruptor (agradable) . Gracias. Muy interesante cómo freeconsidera 4.0G(que es lo que obtengo) más amigable con los humanos que 4 GB. "Mamá, tengo hambre, me gustaría 1.0 manzana, por favor". Si esto es lo mejor que tenemos en Linux, probablemente debería simplemente analizar el número y reemplazarlo Gcon el GBmismo .. Muy pocas veces nos vemos discos duros, por ejemplo, se anuncia como "320 g" en lugar de "320 GB". :(
Robottinosino
55
@Robottinosino, los tamaños de HDD se expresan en GB (10 ^ 9 bytes), mientras que la memoria generalmente se expresa en GiB (2 ^ 30 bytes), 4.0G le da una idea de la precisión. Con 4GB, no sabes si es exactamente 4GB (¿o 4GiB?) O 4.4GB redondeado a 4 o 3.6G redondeado a 4.
Stéphane Chazelas
@Robottinosino Si desea redondearlo a un número más legible para los humanos y agregar GB, intentefree -h | gawk '/Mem:/{print $2}' | rev | cut -c 2- | rev | xargs printf "%.*fGB\n" 0
aalaap
3

En Linux,

read x memtotal x < /proc/meminfo

Almacenaría la cantidad total de mem $memoryen número de kiB. Esa es la cantidad de memoria disponible para Linux, la misma que informó free.

Si desea la RAM instalada, puede hacer cosas como:

awk '{s+=$0};END{print s}' /sys/bus/mc*/devices/dimm*/size

Para obtener el tamaño en MiBs. O

awk '{s+=$0};END{printf "%.2gG\n", s/1024}' /sys/bus/mc*/devices/dimm*/size

Si quieres el tamaño en GiB.

Stéphane Chazelas
fuente
0

La forma más simple es usar el comando libre

free -gh
vlad
fuente
Necesitas analizar eso también.
contramode