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?


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.


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.


0

La forma más simple es usar el comando libre

free -gh

Necesitas analizar eso también.
contramode
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.