linux system

free

Показать объём свободной и используемой оперативной памяти и swap

Описание

Команда free выводит сводку по использованию оперативной памяти (RAM) и подкачки (swap) в системе. Это один из первых инструментов, который проверяют при диагностике нехватки памяти или анализе производительности сервера.

Вывод free разделён на три строки: Mem (физическая оперативная память), Swap (раздел подкачки) и опционально Total. Ключевой столбец — available, показывающий реально доступную память с учётом освобождаемых кэшей.

Используйте free -h для читаемого вывода, free -m для работы с результатами в скриптах (мегабайты — удобная единица).

Синтаксис

# Показать память (в килобайтах по умолчанию) free # Показать в мегабайтах — удобно для скриптов free -m # Показать в читаемом формате (K/M/G автоматически) free -h # Показать с итоговой строкой Total free -h -t # Обновлять каждые 2 секунды (как watch) free -s 2

Столбцы вывода

total used free shared buff/cache available Mem: 7.7G 2.1G 1.2G 256M 4.4G 5.1G Swap: 2.0G 0B 2.0G
СтолбецОписание
totalОбщий объём физической памяти / swap
usedИспользуемая память (total − free − buff/cache)
freeСовершенно свободная память — ничем не занята
sharedПамять, используемая разделяемыми сегментами (tmpfs, IPC)
buff/cacheБуферы ядра + файловый кэш (ОС освободит при необходимости)
availableРеально доступная память для запуска новых процессов: free + освобождаемый buff/cache. Этот столбец важнее free

Флаги и опции

ФлагОписаниеПример
-b Выводить в байтах free -b
-k Выводить в килобайтах (поведение по умолчанию) free -k
-m Выводить в мегабайтах — удобно для скриптов и сравнений free -m
-g Выводить в гигабайтах free -g
-h, --human Читаемый формат: система сама выбирает единицы (K/M/G/T) для каждого значения free -h
-t, --total Добавить итоговую строку Total (сумма Mem + Swap) free -h -t
-s N Повторять вывод каждые N секунд (непрерывный мониторинг) free -s 2
-w, --wide Широкий вывод: разделить buff/cache на отдельные столбцы buffers и cache free -w -h
--help Показать справку по использованию free --help
-V Показать версию утилиты и выйти free -V

Паттерны использования

Память в мегабайтах

free -m
#               total   used   free  shared  buff/cache  available
# Mem:           7874   2143   1283     256        4447       5234
# Swap:          2047      0   2047

Читаемый формат

free -h
#               total  used  free  shared  buff/cache  available
# Mem:           7.7G  2.1G  1.2G    256M        4.4G       5.1G
# Swap:          2.0G    0B  2.0G

Извлечь общий объём ОЗУ (из ДЗ урока 10)

# Источник: Linux_ Домашнее задание 6
# Получить общий объём RAM в МБ
free -m | grep Mem | awk '{print $2}'
# 7874

# Дописать в файл (ДЗ урока 10)
free -m | grep Mem | awk '{print $2}' >> /opt/GROUP/NAME/.process_management

Мониторинг памяти в реальном времени

# Обновлять каждые 3 секунды
free -h -s 3

# Альтернатива: watch (обновляет любую команду)
watch -n 2 free -h

# С итоговой строкой
free -h --total

Советы и предупреждения

Совет: смотрите на available, а не на free
Столбец free показывает память, которую ничто не занимает даже как кэш. Это число часто мало — Linux агрессивно использует свободную память под файловый кэш для ускорения работы. Столбец available реалистичнее: он показывает память, которую ОС может отдать новому процессу, включая освобождаемый кэш. Оценивайте память по available.
Совет: много buff/cache — это норма
Большое значение buff/cache не означает нехватку памяти — ядро Linux намеренно кэширует файлы для ускорения I/O. При необходимости ядро автоматически освобождает эту память под процессы. Беспокоиться стоит только когда available близко к нулю и активно используется swap.
Совет: free -m для скриптов
В bash-скриптах удобнее работать с free -m (мегабайты — целые числа без суффиксов K/G). Формула извлечения: free -m | grep Mem | awk '{print $2}' — вернёт только число мегабайт общего ОЗУ. Флаг -h хорош для чтения человеком, но усложняет обработку в awk/sed.