Как получить общую физическую память в Bash, чтобы присвоить ее переменной? - PullRequest
42 голосов
/ 14 марта 2010

Как я могу получить общую физическую память в байтах моего компьютера с Linux?

Мне нужно присвоить его переменной сценария bash.

Ответы [ 5 ]

60 голосов
/ 14 марта 2010
grep MemTotal /proc/meminfo | awk '{print $2}'  

Возвращаемое число в КБ

21 голосов
/ 14 марта 2010
phymem=$(awk -F":" '$1~/MemTotal/{print $2}' /proc/meminfo )

или используя бесплатный

phymem=$(free|awk '/^Mem:/{print $2}')

или используя оболочку

#!/bin/bash

while IFS=":" read -r a b
do
  case "$a" in
   MemTotal*) phymem="$b"
  esac
done <"/proc/meminfo"
echo $phymem
8 голосов
/ 18 октября 2015

Я придумал это в предположении, что физическая память будет первым числом в выводе free:

free -m | grep -oP '\d+' | head -n 1

Это позволяет вам сконфигурировать free для вывода нужного вам модуля (-m, -g, ...), и он не зависит от языка системы (другие ответы зависят от строки "Mem:" в выводе free, которая может изменить в зависимости от языка).

8 голосов
/ 14 марта 2010

Как насчет

var=$(free | awk '/^Mem:/{print $2}')
1 голос
/ 13 мая 2015

Глупая встроенная версия Python, которая выглядит слишком сложной, но на самом деле довольно полезной

freemem=$(echo -e 'import re\nmatched=re.search(r"^MemTotal:\s+(\d+)",open("/proc/meminfo").read())\nprint(int(matched.groups()[0])/(1024.**2))' | python)

Возвращает память в ГБ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...