Команда free в linux

Обновлено: 08.07.2024

Для тех, кто не использует или не любит дистрибутивы Linux семейства RHEL, следует ориентироваться на версии ядра. В случае, когда мы говорим RHEL 6, то имеется в виду ядро 2.6.32 и ниже. Если говорим о RHEL 7/8, то 3.10 и выше.

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

Оригинал статьи лежит здесь. На случай, если кто-то мой перевод сочтёт негодным. :)

Разбираем команду free: что должен знать администратор Linux

Команда free популярна среди системных администраторов Unix/Linux. Это серьёзный инструмент, дающий полное представление об использовании памяти в ясном для человека виде.

В man странице про данную команду сказано, что free отображает общее количество свободной и используемой памяти в системе, включая пространство подкачки и физической памяти, а также буферы с кешами используемые ядром операционной системы. Данная информация собирается путём разбора содержимого /proc/meminfo.

Как и другие команды, free прошла через череду изменений на протяжении своего существования, дабы вывод её был осмысленным и точным, что требуется для дальнейшего принятия решений. В RHEL 6 вывод утилиты free ощутимо отличается от вывода такового на RHEL 7 или 8. Впрочем, ключевые параметры остаются неизменными в любой версии.

Если вы наберёте free -h в RHEL 6 (я использовал ключ -h для вывода в удобном для человека виде), то вывод будет похож на этот:

В RHEL 7/8 вывод выглядит иначе:

В то же время, в RHEL 8 всё будет выглядеть следующим образом:

Дабы сделать вывод программы более понятным для восприятия, в команде предусмотрены следующие опции: free -b, -k, -m, -g. Они отображают количество памяти в байтах, килобайтах, мегабайтах и гигабайтах. Также вы можете использовать команду free -h для отображения вывода в удобном, понятном для человека виде. Если нужны подробности, запустите free --help для дополнительной справки по возможностям программы.

Различные столбцы, показанные в разных версиях выше, указывают на общую доступную память (total), использованную (used), свободную (free), разделяемую (shared) память. Помимо этого, в выводе отображается память, расположенная в данных момент в буферах и кешах операционной системы.

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

Red Hat Enterprise Linux 6

В случае с RHEL 6, сфокусироваться следует на столбцах -/+ buffers/cache. На рис. 1 выше мы видим, что общее количество памяти равно 94 гигабайтам, где израсходовано 44 гигабайта и свободно 49 гигабайт. Вообще, это довольно нагруженная система и потребление памяти в ней выглядит высоким. Волноваться не стоит, хотя всё же следует посмотреть на столбец в -/+ buffers/cache. Данное значение показывает занятые 42 гигабайта и свободные 52 Гб. Это означает, что в реальности используется всего 42 гигабайта, а не 44. Значение задействованных 44 гигабайт включает себя ещё и кеши. Заметьте, даже простой взгляд на значение колонки used без учёта значения занятых кешей уже влияет на интерпретацию оценки производительности системы.

Теперь разберём смысл колонок со значениями буферов и кешей:

· buffers: память задействованная буферами ядра
· cached: память занятая “Page Cache” (страничным кешем).

Страничный кеш — не что иное, как данные / файлы, копируемые в оперативную память, в момент когда ядро операционной системы выполняет операции чтения или записи на диске. Причина тому — производительность операций ввода-вывода. Таким образом, ядро держит эти файлы в ОЗУ и высвобождает их в тот момент, когда они не требуются или когда пространство памяти запрашивается какой-либо командой или процессом в случае отсутствия свободной памяти в системе.

Red Hat Enterprise Linux 7/8

В операционных системах RHEL 7/8 уже следует сместить фокус на колонку available, поскольку колонка -/+ buffers/cache была удалена и заменена столбцом available. В то же время, столбцы buffers и cache были объединены в единое значение buff/cache и имеют ровно тот же смысл, что и ранее. Столбец available показывает оценку сколько памяти доступно приложениям без использования подкачки.

Так когда сисадмину всё же следует начать беспокоиться?

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

· Значение free близко к 0 или имеет очень небольшие значения
· Значение used близко к общему количеству RAM
· Значение доступной памяти в available (или же описанная в столбцах free -/+ buffers/cache) является относительно большой в сравнении с общим количеством памяти.
· Размер раздела или файла подкачки не меняется

Однако, системному администратору стоит начать беспокоиться, когда появляются следующие признаки реальной нехватки памяти:

Подведение итогов

Команда free — полезный инструмент, которая может очень рассказать системному администратору о том, что происходит в системе. Знание о различиях в выводе free может помочь в более точной интерпретации выдаваемых данных.

Сколько свободной оперативной памяти доступно в моей системе Linux? Достаточно ли свободной памяти для установки и запуска новых приложений?

В системах Linux вы можете использовать команду free чтобы получить подробный отчет об использовании памяти системой.

Команда free предоставляет информацию об общем объеме физической памяти и памяти подкачки , а также о свободной и используемой памяти.

Как использовать команду free

Синтаксис free команды следующий:

При использовании без какой-либо опции команда free будет отображать информацию о памяти и подкачке в кибибайтах. 1 кибибайт (КиБ) равен 1024 байтам.

Вывод будет включать три строки, заголовок, одну строку для памяти и одну для свопа:

В более старых версиях Linux вывод может немного отличаться.

Вот что означает каждый столбец:

Отображение использования памяти в удобочитаемом формате

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

Отображение использования памяти в других показателях

Команда free также позволяет вам указать единицы измерения памяти. Допустимые варианты:

Например, чтобы отобразить результат в мегабайтах, введите:

Отображение итоговых значений столбца

Чтобы отобразить строку, показывающую итоги столбца, используйте параметр -t . Это дает вам сумму памяти и свопа в столбцах total, used и free.

Непрерывно печатать результат

Чтобы постоянно отображать информацию о памяти на экране, вызовите free с параметром -s ( --seconds ), за которым следует число, определяющее задержку.

Например, чтобы распечатывать информацию о памяти каждые пять секунд, вы должны выполнить:

free команда будет продолжать отображать результат, пока вы не нажмете CTRL+C Это похоже на поведение команды watch .

Чтобы отображать результат определенное количество раз, используйте параметр -c ( --count ). В примере ниже команда выведет результат десять раз:

Выводы

Мы показали вам, как использовать free команду для проверки использования памяти системой и интерпретации вывода команды. Чтобы просмотреть все доступные параметры, введите в терминале man free .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Favorite

Добавить в избранное (1 оценок, среднее: 5,00 из 5)

Команда free в Linux с примерами

Объясняя вывод команды Free в Linux

Использовать команду Free в Linux довольно просто. Вот синтаксис для команды:

free [options]

Пример вывода для команды free может выглядеть следующим образом:

Команда free без параметров возвращает результаты для ‘total’, ‘used’, and ‘free’ объема памяти в вашей системе благодаря доступу к информации из ядра Linux. Она также отображает категории для ‘shared’, ‘buff/cache’, и ‘available’.

Чтобы избежать некоторой путаницы, давайте уточним, что означают эти термины.

Эти уточнения важны. Неправильное присвоение значения терминам «свободная или используемая память» может привести к неправильному пониманию использования памяти вашей системой.

Это может привести к тому, что неопытный пользователь будет ложно полагать, что его система нуждается в обновлении с увеличением ОЗУ. Обратите внимание, что в предыдущих версиях не было отображения доступной памяти. Пользователи могут ошибочно полагать, что из-за высокого использования памяти их аппаратное обеспечение недостаточно мощное. Предполагается, что доступная вкладка была создана, чтобы помочь компенсировать это распространенное недоразумение.

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

Оценка «доступной» памяти, вероятно, достаточна для того, кто просто хочет знать, как их система реагирует на определенные приложения. Если вы не можете увидеть это поле, вам может потребоваться обновить ее до последней версии. Вы можете проверить текущую версию, запустив «free -V». Наша версия 3.3.15 имеет «free» в своем выводе.

Настройка вывода команды free

Вывод по умолчанию отображает информацию в килобайтах, но есть варианты для отображения в разных форматах, если вы предпочитаете. Запуск справки (free -help) отображает все возможные варианты, которые вы можете добавить.

На наш взгляд, наиболее полезная опция здесь -h, которая показывает вывод команды free в удобочитаемом формате.

Есть другие варианты. Они показывают ту же самую запрошенную информацию с некоторыми основными математическими преобразованиями. Мы думаем, что удобочитаемый вариант (free -h) является одним из наиболее эффективных для обычного пользователя.

Автоматизируйте команду free и запускайте ее непрерывно или периодически

Допустим, вы хотите открыть серию приложений и посмотреть, как влияет ваша память. Для тестового вывода мы будем использовать читаемый человеком формат, используя степени 1000 (Gb) вместо 1024 (GiB). Мы собираемся записать в течение 20 секунд, чтобы проанализировать воздействие. Мы собираем данные каждые 5 секунд, и будем делать это за 4 цикла. Вот этот пример, отформатированный для командной строки и ее вывода:

Мы подождали несколько секунд, а затем открыли несколько вкладок браузера и получил доступ к некоторым закладкам. Стресс этих видов деятельности отмечен колебаниями объема производства. Обратите внимание, что эффект будет более выраженным при использовании выходного формата с меньшим округлением. В наших чисто демонстрационных целях это не нужно.

Если вы хотите постоянно отслеживать использование памяти командой free, но не хотите, чтобы ее вывод загромождал экран, вы можете использовать команду watch вместе с командой free.

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

Заключение

В этой статье показано, как начать использовать команду «free» в Linux. Надеюсь, вы найдете эту статью полезной и простой для понимания. «free» может использоваться для анализа использования системной памяти и может быть изменbyf с помощью различных опций для точной настройки вывода для ваших нужд.

Если у вас есть какие-либо вопросы или предложения, пожалуйста, сообщите нам об этом в разделе комментариев.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Команда free позволяет вызывать одноименную утилиту, осуществляющую вывод информации об использовании оперативной памяти. Данная команда позволяет ознакомиться с информацией об использовании как физической памяти (RAM — Random Access Memory), представленной модулями с набором чипов в специальных слотах на материнской плате компьютера, так и памяти из раздела или файла подкачки подкачки (SWAP), расположенного на жестком диске или твердотельном накопителе. Вся выводимая с помощью команды информация с значительным набором дополнительных данных доступна из файла /proc/meminfo.

Базовый синтаксис команды выглядит следующим образом:

Наиболее важными параметрами являются параметр -t, позволяющий выводить информацию об общем количестве использованной памяти в отдельной строке, параметр -s, позволяющий обновлять вывод через заданный промежуток времени в секундах, параметр -c, позволяющий ограничить количество обновлений вывода заданным значением, параметр -l, позволяющий выводить информацию о нижней и верхней памяти, параметр -h, позволяющий выводить информацию в удобном для чтения человеком формате, а также параметры --bytes, --kilo, --mega, --giga, --tera, --peta, позволяющие выводить числовые значения в соответствующих единицах, а именно, байтах, килобайтах (утилита работает в данном режиме по умолчанию), мегабайтах, гигабайтах, терабайтах и петабайтах соответственно. Кроме того, существуют параметры --kibi, --mebi, --gibi, --tebi, --pebi, позволяющие выводить числовые значения в кибибайтах, мебибайтах, гибибайтах, тебибайтах и пебибайтах.

Вывод утилиты представлен в форме таблицы. В строке «Память» выводится информация об использовании физической памяти, в строке «Подкачка» - информация об использовании раздела или файла подкачки, в строке «Всего» - информация об общем количестве использованной и свободной памяти (в случае использования параметра -t). В столбце «Всего» приведено общее количество памяти (параметры MemTotal и SwapTotal файла /proc/meminfo), в столбце «Занято» - количество использованной памяти , в столбце «Свободно» - количество доступной памяти (параметры MemFree и SwapFree файла /proc/meminfo), в столбце «Общая» - количество разделяемой памяти (параметр Shmem файла /proc/meminfo), в столбце «буф./врем.» - количество памяти, используемой для буферизации содержимого файловых систем (параметры Cached и SwapCached файла /proc/meminfo в сумме), в столбце «Доступно» - количество памяти, доступной для резервирования (параметр MemAvailable файла /proc/meminfo).

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

Получение информации об использовании оперативной памяти

Команда free может использоваться для получения информации об использовании оперативной памяти в любое время. По умолчанию все значения в килобайтах:

Очевидно, что на данном компьютере активно используется раздел подкачки, что негативно отражается на его производительности.

Вывод с использованием значений в мегабайтах, на мой взгляд, более удобный:

А это удобный для чтения человеком формат с единицами измерения:

В большинстве случаев затраты оперативной памяти можно оценить, не используя каких-либо параметров.

Отслеживание состояния оперативной памяти

Для отслеживания состояния оперативной памяти следует использовать команду free с параметром -s и значением длительности периода перед обновлением информации в секундах:

всего занято свободно общая буф./врем. доступно
Память: 2037684 1622484 102500 18544 312700 241732
Подкачка: 2098172 1112164 986008

всего занято свободно общая буф./врем. доступно
Память: 2037684 1622484 102500 18544 312700 241732
Подкачка: 2098172 1112164 986008

всего занято свободно общая буф./врем. доступно
Память: 2037684 1622468 102500 18544 312716 241748
Подкачка: 2098172 1112164 986008

Очевидно, что теперь утилита периодически выводит информацию о состоянии оперативной памяти. В этом случае работа утилиты завершается с помощью комбинации клавиш CTRL+C.

linux утилита free

Как посмотреть объём оперативной памяти и файла подкачки? Как узнать, сколько оперативной памяти используется в настоящее время системой, а сколько доступно для запуска новых приложений? Для этого есть в linux утилита free.

Описание утилиты free

Linux утилита free

Linux утилита free показывает свободную и занятую память в системе. Данные получаются путем разбора /proc/meminfo.

При запуске без ключей Linux утилита free выведет на экран следующие данные:

Вывод содержит данные о физической памяти Mem и файле подкачки Swap. В столбцах указаны следующие параметры:

total – всего установленной памяти
used – использовано памяти (рассчитывается как total – free – buffers – cache)
free – свободно памяти
shared – разделенная память, используемая (в основном) tmpfs
buff/cache – память, используемая буферами ядра и кэшем страниц
available – доступно памяти для запуска новых приложений (без учета swap)
По умолчанию все значения перечисленных параметров указываются в кибибайтах (2 в степени 10 = 1024).

Linux утилита free: формат вывода

Для изменения формата вывода linux утилита free может принимать следующие ключи:

-b, –bytes – значения параметров памяти указываются в байтах
-k, –kibi – значения параметров памяти указываются в кибибайтах (используется по умолчанию)
-m, –mebi – значения параметров памяти указываются в мебибайтах
-g, –gibi – значения параметров памяти указываются в гибибайтах
–tebi – значения параметров памяти указываются в тебибайтах
–pebi– значения параметров памяти указываются в пебибайтах

Например, если мы хотим увидеть значения памяти в мебибайтах, используем ключ -m:

Аналогично, имеются опции –kilo, –mega, –giga, –tera, –peta. Однако, в отличии от описанных выше, которые при преобразовании используется множитель 1024, в данных ключах это множитель будет равен 1000.

–si – использует kilo, mega, giga и т.д. (множитель 1000) вместо kibi, mebi, gibi (множитель 1024).

-h, –human – значения памяти выводятся в удобном для человека представлении. Утилита автоматически подберет наиболее подходящий префикс (B, K, M, G, T, P с множителем 1024):

-w, –wide – переключение вывода в расширенный режим, который обеспечивает вывод более 80 символов в строке. В данном режиме параметры buffers и cache разделены на 2 колонки:

-l, –lohi – дополнительно выводит статистику по самым низким и высоким значениям:

-t, –total – дополнительно выводит данные по общему значению всей памяти (Mem + Swap):

-s, –seconds delay – постоянно обновлять данные с задержкой, указанной в секундах. Допускается использование микросекунд после точки. Например, установим обновление данных в 2.5 секунды:

Каждые 2.5 секунды на экране будет появляется новый вывод команды free с обновленными данными. Чтобы остановить выполнение команды нажмите Ctrl + C.

-c, –count count – выводить новые данные определенное число раз. Требуется указание параметра -s с временем задержки (если ключ опущен, будет использовано стандартное значение – 1 секунда).

Посмотрим изменение используемой памяти с разницей в 60 секунд:

При этом, после 60 секунд и второго вывода утилита free автоматически закончит свою работу.

Читайте также: