Lecture de mémoire système lisible par l'homme à partir de CLI?

15

Sur OS X, j'obtiens une belle lecture de mémoire système lisible par l'homme comme ceci:

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

imprime l'amical:

4 GB

Bien que cela soit correct sur Linux:

lshw -class memory

il génère:

size: 4096MiB

J'ai besoin de l'analyser péniblement et d'essayer d'en faire une chaîne aussi agréable que celle ci-dessus.

Suis-je en train d'utiliser la mauvaise commande?

Robottinosino
la source
5
"J'ai besoin de l'analyser douloureusement" ... Ce gros truc moche pour osx n'est pas douloureux? :-)
Patrick
@Patrick: Je n'aime pas OS X quand je le compare à Linux!
Robottinosino

Réponses:

32

Si c'est tout ce dont vous avez besoin, utilisez simplement free:

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

freerenvoie des informations sur la mémoire, le -hcommutateur lui indique d'imprimer dans un format lisible par l'homme.

terdon
la source
1
Je ne savais pas qu'il y freeavait un (joli) -hinterrupteur. Merci. Très intéressant de voir comment freeDeems 4.0G( ce qui est ce que je reçois) plus respectueux de l' humain que 4 GB. "Maman, j'ai faim, j'aimerais 1.0 pomme, s'il te plait." Si c'est le meilleur que nous ayons sur Linux, je devrais probablement juste analyser le nombre et le remplacer Gpar GBmoi-même. Très rarement, nous voyons des disques durs, par exemple, annoncés comme "320G" plutôt que "320 Go". :(
Robottinosino
5
@Robottinosino, les tailles de disque dur sont exprimées en Go (10 ^ 9 octets), tandis que la mémoire est généralement exprimée en GiB (2 ^ 30 octets), 4,0G vous donne une idée de la précision. Avec 4 Go, vous ne savez pas si c'est exactement 4 Go (ou 4GiB?) Ou 4,4 Go arrondis à 4 ou 3,6 G arrondis à 4.
Stéphane Chazelas
@Robottinosino Si vous voulez arrondir à un nombre plus lisible et ajouter GB, essayezfree -h | gawk '/Mem:/{print $2}' | rev | cut -c 2- | rev | xargs printf "%.*fGB\n" 0
aalaap
3

Sous Linux,

read x memtotal x < /proc/meminfo

$memoryStockerait le montant total de mem en nombre de kiB. C'est la quantité de mémoire disponible pour Linux, la même que celle rapportée par free.

Si vous voulez la RAM installée, vous pouvez faire des choses comme:

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

Pour obtenir la taille en Mio. Ou

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

Si vous voulez la taille en Gio.

Stéphane Chazelas
la source
0

La manière la plus simple est d'utiliser la commande libre

free -gh
Vlad
la source
Vous devez également analyser cela.
contre-mode