Se isso é tudo que você precisa, use apenas free
:
$ free -h | gawk '/Mem:/{print $2}'
7.8G
free
retorna informações de memória, a opção -h
informa para imprimir em formato legível.
No OS X, recebo uma boa leitura de memória do sistema legível por humanos :
printf -v system_memory \
"$(system_profiler SPHardwareDataType \
| awk -F ': ' '/^ +Memory: /{print $2}')"
echo "$system_memory"
exibe o amistoso:
4 GB
Embora isso no Linux esteja correto:
lshw -class memory
gera:
size: 4096MiB
Eu preciso analisá-lo dolorosamente e tentar transformá-lo em uma string tão legal quanto a acima.
Estou usando o comando errado?
No Linux,
read x memtotal x < /proc/meminfo
Armazenaria o valor total de mems em $memory
no número de kiB. Essa é a quantidade de memória disponível para o Linux, o mesmo relatado por free
.
Se você deseja a RAM instalada, pode fazer coisas como:
awk '{s+=$0};END{print s}' /sys/bus/mc*/devices/dimm*/size
Para obter o tamanho em MiBs. Ou
awk '{s+=$0};END{printf "%.2gG\n", s/1024}' /sys/bus/mc*/devices/dimm*/size
Se você quiser o tamanho em GiB.
A maneira mais simples é usar o comando free
free -gh
Tags memory system-information