Как узнать общий объем физической памяти (RAM) в Linux

от автора

image

1. Краткое содержание

Иногда возникает необходимость проверить общий объём памяти сервера, на котором запущена ОС Linux, или же данные о памяти требуются для сценариев командной оболочки. К счастью, есть множество инструментов, которые нам в этом помогут. В этом руководстве приводятся различные команды и утилиты для определения общего объёма физической памяти.

2. Команда free

free — самая простая в использовании команда из подборки. С её помощью выводятся данные по использованию физической и SWAP-памяти — по умолчанию в стандартном потоке вывода. Команда free — один из самых распространённых способов быстро проверить объём оперативной памяти, поскольку она доступна в большинстве дистрибутивов Linux. Достаточно ввести её в терминале без всяких флагов:

$ free

           total    used    free  shared  buff/cache   available Mem:     8021048 1320432 5689744  335556 1010872 6121932 Swap:          0       0       0

Как видите, объём физической памяти указан в байтах. Однако, эти же данные можно вывести в удобочитаемом формате, добавив флаг -h или –human:

$ free -h

           total    used    free  shared  buff/cache   available Mem:       7.6Gi   1.3Gi   5.4Gi   318Mi   985Mi   5.8Gi Swap:         0B      0B      0B

Как видно из полученных результатов, общий объём оперативной памяти составляет 7,6 ГБ. Есть и другие опции, с помощью которых можно привести выводимые данные в нужный формат: –kilo, –mega, –Giga и так далее. Ещё есть интересная опция -s:

$ free -h -s 5

Флаг -s обозначает секунды, и в этом случае команда free выведет данные об использовании оперативной памяти за каждые пять секунд. Опция особенно полезна, если отслеживать использование памяти нужно с заданным интервалом. Останавливается процесс сочетанием горячих клавиш Ctrl +C.

3. Команда vmstat

Как и команда free, vmstat (статистика виртуальной памяти) также доступна в большинстве дистрибутивов Linux. По умолчанию при выполнении команды vmstat выводятся данные о свободной памяти, памяти используемой в качестве буферов и кэша, SWAP-памяти, использовании процессора, блочных устройств и системы в целом:

$ vmstat -w

--procs-- -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------    rb     swpd     free     buff    cache   si   sobibo   in   cs  us  sy  id  wa  st    10        0  5352900    56816  105370800   16273  328 1087  18   4  78   0   0

Флаг -w или –wide позволяет отобразить результат в развёрнутом, удобном для чтения формате. Поскольку нас интересует общий объём оперативной памяти, добавим флаг -s или –stats:

$ vmstat -s

  8021048 K total memory   1564516 K used memory    305336 K active memory   1962636 K inactive memory   5391588 K free memory     58224 K buffer memory   1006720 K swap cache         0 K total swap         0 K used swap         0 K free swap     76393 non-nice user cpu ticks         5 nice user cpu ticks     14122 system cpu ticks    337834 idle cpu ticks      1790 IO-wait cpu ticks      1463 IRQ cpu ticks       614 softirq cpu ticks         0 stolen cpu ticks    617253 pages paged in    310410 pages paged out         0 pages swapped in         0 pages swapped out   1426200 interrupts   4722588 CPU context switches    1625563254 boot time      1949 forks 

Первая запись в результатах — общий объём памяти RAM. Если нужны не все данные, можно использовать grep для получения только требуемой записи:

$ vmstat -s | grep -i 'total memory' | sed 's/ *//'

8021048 K total memory

4. Команда top

top представляет собой диспетчер задач в виде командной строки с выводом в режиме реального времени. С её помощью можно просмотреть активные процессы в виде удобной таблицы. Также она выводит данные по использованию процессора, оперативной памяти и системы в целом. Чтобы запустить такой диспетчер задач, достаточно выполнить команду top:

$ top

top - 15:18:13 up 57 min,  1 user,  load average: 3.40, 3.26, 2.04 Tasks: 138 total,   1 running, 137 sleeping,   0 stopped,   0 zombie %Cpu(s): 17.2 us,  3.6 sy,  0.0 ni, 77.5 id,  0.3 wa,  0.9 hi,  0.5 si,  0.0 st MiB Mem :   7833.1 total,   4665.9 free,   1782.3 used,   1384.8 buff/cache top - 15:18:49 up 57 min,  1 user,  load average: 2.61, 3.08, 2.03 Tasks: 138 total,   1 running, 137 sleeping,   0 stopped,   0 zombie top - 15:18:58 up 58 min,  1 user,  load average: 2.45, 3.02, 2.02 MiB Swap:  0.0 total,  0.0 free,  0.0 used.   5324.5 avail Mem

Вверху, рядом с полем Mem, приводятся данные по физической памяти: общий объём RAM 7833 МБ.

5. Утилита dmidecode

Утилита dmidecode в удобочитаемом формате выводит сведения об аппаратных ресурсах: спецификации, серийные номера, версии BIOS. Данные по оборудованию извлекаются из таблицы DMI. С помощью утилиты можно получить ценные сведения о системе, например, максимальный объём поддерживаемой памяти.

5.1. Установка dmidecode

Утилита dmidecode не на всех дистрибутивах Linux установлена по умолчанию, так что начнём с её установки. Установить dmidecode можно непосредственно из репозитория дистрибутива с помощью менеджера пакетов.
В дистрибутивах, основанных на Ubuntu, возможна установка пакета с помощью инструмента apt:

# apt install dmidecode

Для RHEL, Fedora и CentOS можно использовать yum:

# yum install dmidecode

Если дистрибутив основан на Arch, с этой задачей справится pacman:

# pacman -Sy dmidecode

5.2. Использование dmidecode

Как только установка завершена, выполним команду dmidecode из терминала:

# dmidecode

Чтобы выполнить dmidecode, нам потребуются корневые привилегии. После выполнения мы получим подробные сведения об аппаратных ресурсах. Будет много данных по оборудованию, но нас интересует только общий объём памяти.

К счастью, мы можем добавить к команде опцию –type и указать интересующие нас компоненты: BIOS, память, процессор, температуру и так далее. Опция –type требует введения номера типа записи DMI.

В нашем случае это запись DMI о памяти, и получить к ней доступ можно, введя следующие значения: 5, 6, 16, 17, 18, 19, 20, 21 и 22. Из этого перечня выбираем 19, поскольку именно так обозначаются устройства оперативной памяти, подключённые к материнской плате:

# dmidecode --type 19

# dmidecode 3.3 Getting SMBIOS data from sysfs. SMBIOS 3.0.0 present.  Handle 0x0049, DMI type 19, 31 bytes Memory Array Mapped Address Starting Address: 0x00000000000 Ending Address: 0x001FFFFFFFF Range Size: 8 GB Physical Array Handle: 0x0044 Partition Width: 1

Из результатов следует, что у нас только один модуль RAM размером 8 ГБ, установленный в один из слотов для оперативной памяти.

6. Виртуальный файл /proc/meminfo

Директория /proc относится к особому типу директорий, содержащих виртуальные файлы. Эти виртуальные файлы позволяют заглянуть в ядро, процессы и конфигурации Linux. Они не занимают места на диске, поскольку создаются непосредственно в момент обращения к ним. Для чтения некоторых требуются корневые привилегии.

В директории /proc есть особый файл под названием meminfo, прочесть который можно командами cat и less. Среди прочих полезностей там содержатся и данные об объёме физической памяти. Давайте заглянем в файл /proc/meminfo с помощью cat:

$ cat /proc/meminfo

В примере использована команда cat — удобная утилита для чтения из файла или стандартного потока ввода. При выполнении эта команда прочтёт файл /proc/meminfo и представит обширные сведения о физической памяти. Нас интересует только общий объём оперативной памяти, который указан в первых трёх строках результата.

$ cat /proc/meminfo | head -n 3

MemTotal:    8021048 kB MemFree:     4542960 kB MemAvailable:5155668 kB

Мы ограничили вывод интересующими нас строками с помощью команды head. В сочетании с аргументом -n команда head задаёт количество строк результата. Размер памяти приводится в килобайтах и даёт понимание общего объёма физической памяти, а также свободного и доступного объёма.

Предположим, что мы пишем скрипт для командной оболочки Bash, и в нём фигурирует объём физической памяти RAM. Чтобы его туда добавить, можем выполнить чтение файла /proc/meminfo, а затем с помощью grep извлечь общий объём памяти.

#!/bin/bash  total_ram () {   local totalram=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o '[[:digit:]]*')   echo $totalram }  ram_size=$(total_ram) echo "Total RAM: $ram_size kB" 

Теперь сохраним скрипт и сделаем его исполняемым:

$ chmod +755 totalram.sh $ ./totalram.sh Total RAM: 8021048 kB

7. Использование диспетчеров задач с графическим пользовательским интерфейсом

Отслеживать работу процессора, использование оперативной памяти и сетевых ресурсов, а также управлять процессами можно с помощью широкого ряда диспетчеров задач с графическим интерфейсом. Рассмотрим самые популярные варианты для Linux.

7.1. GNOME System Monitor

GNOME System Monitor входит в состав среды рабочего стола GNOME как диспетчер задач по умолчанию. А пользователи другой рабочей среды с лёгкостью могут найти пакет gnome-system-monitor в репозитории с дистрибутивом. После установки можно запустить диспетчер из командной строки:

$ gnome-system-monitor

image

Среди сведений на вкладке Resources найдётся и общий объём памяти.

7.2. KSysGuard

KSysGuard — диспетчер задач, разработанный сообществом KDE как дефолтный для свободной среды рабочего стола KDE. Аналогичным образом, если вы используете другую рабочую среду, его несложно установить в системе с помощью пакета ksysguard в соответствующем репозитории. Запустить его после установки можно командой ksysguard:

$ ksysguard

image

Открыв ksysguard, перейдём на вкладку System Load. Данные о памяти там представлены вместе с наглядным графиком.

8. Заключение

В этой статье мы рассмотрели различные команды и инструменты, с помощью которых можно выяснить объём физической памяти системы под управлением Linux.

Мы изучили базовую команду free и её альтернативу vmstat. Затем узнали, как с помощью команды top можно получить различные системные данные. Также взглянули на утилиту dmidecode и выяснили, как извлечь данные о физической памяти из таблицы DMI.

Ознакомились с директорией /proc и научились читать файл /proc/meminfo, чтобы выяснить общий объём памяти RAM и использовать его в скрипте для оболочки Bash. И наконец, перечислили пару графических диспетчеров задач, показав, как с их помощью просмотреть объём и статистику использования оперативной памяти.


НЛО прилетело и оставило здесь промокод для читателей нашего блога:

15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.


ссылка на оригинал статьи https://habr.com/ru/articles/647921/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *