Мониторинг процессов и ресурсов в ОС Linux
Last updated
Last updated
Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать:
df
Утилита отображает стандартный набор колонок, но понять в ее выводе что-то с первого раза сложно. Все данные выводятся в килобайтах. Теперь давайте попросим утилиту выводить данные в более читаемом формате:
df -h
Это самое популярное сочетание опций, потому что оно дает максимально понятную информацию и уже можно судить о том, что происходит на диске. Например, мы видим, что в корневой директории уже занято 83% места и, возможно, пора что-то удалить. Если задать опцию -a, вы можете получить информацию обо всех файловых системах известных ядру, которые были смонтированы:
df -a
Здесь отображается огромное количество виртуальных файловых систем ядра. Если вы хотите вывести только информацию про реальные файловые системы на жестком диске можно использовать опцию -x чтобы отфильтровать все tmpfs:
df -x tmpfs
Также можно отфильтровать две файловые системы:
df -x devtmpfs -x tmpfs
Или же указать файловую систему, которую нужно отображать:
df -t ext4
Также можно указать интересующий вас раздел, как вы видели в синтаксисе команды:
df -h /dev/sda2
С помощью опции -i вы можете посмотреть информацию про состояние inode в вашей файловой системе:
df -hi /dev/sda2
inode (произносится а́йнод или инод), индексный дескриптор — это структура данных в традиционных для ОС UNIX файловых системах (ФС), таких как UFS, ext4. В этой структуре хранится метаинформация о стандартных файлах, каталогах или других объектах файловой системы, кроме непосредственно данных и имени.
Вывести объем доступного пространства в каталоге:
df -h /home
Команда df – очень простой в освоении, но эффективный инструмент, позволяющий всегда быть в курсе использования дискового пространства в ваших системах.
Команда du , сокращение от «использование диска», сообщает приблизительный объем дискового пространства, используемого данными файлами или каталогами. Это практически полезно для поиска файлов и каталогов, занимающих большие объемы дискового пространства.
du [OPTIONS]... FILE...
Если данный FILE является каталогом, du будет суммировать использование диска для каждого файла и подкаталога в этом каталоге. Если FILE не указан, du сообщит об использовании диска в текущем рабочем каталоге .
При выполнении без какой-либо опции du отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах.
du ~/Documents
Вы также можете передать команде du несколько файлов и каталогов в качестве аргументов:
du ~/Documents ~/Pictures ~/.zshrc
Если вы запустите du для файла или каталога, для которого у вас нет прав, вы получите что-то вроде «du: невозможно прочитать каталог». В этой ситуации вам нужно будет добавить к команде sudo .
du много опций, я выделю только наиболее часто используемые.
Параметр -a указывает du сообщать об использовании дискового пространства каждым файлом в каталоге.
du -a /tmp/
Обычно вы хотите отображать только пространство, занимаемое данным каталогом, в удобочитаемом формате. Для этого используйте параметр -h.
Например, чтобы получить общий размер /var/lib и всех его подкаталогов, вы должны выполнить следующую команду:
sudo du -h /var
Мы используем sudo потому что большинство файлов и каталогов внутри каталога /var/lib принадлежат пользователю root и не доступны для чтения обычным пользователям.
Чтобы сообщить только общий размер указанного каталога, а не подкаталогов, используйте параметр -s :
Параметр -c указывает du сообщать общую сумму. Это полезно, когда вы хотите получить объединенный размер двух или более каталогов.
Если вы хотите отобразить использование диска подкаталогами n-уровня, используйте параметр --max-depth и укажите уровень подкаталогов. Например, чтобы получить отчет о каталогах первого уровня, вы должны использовать:
По умолчанию утилита du повторно использует дисковое пространство, используемое каталогом или файлом. Чтобы узнать очевидный размер файла, используйте переключатель --apparent-size . «Видимый размер» файла — это фактический объем данных в файле.
du также позволяет использовать шаблон оболочки. Например, чтобы получить размер всех каталогов, начинающихся с «rc» в каталоге /etc, вы должны запустить:
Команду du можно комбинировать с другими командами с конвейерами. Например, чтобы напечатать 5 самых больших каталогов внутри каталога /var вы должны передать вывод du в команду sort чтобы отсортировать каталоги по их размеру, а затем передать результат в команду head которая распечатает только 5 верхних каталогов:
К настоящему моменту вы должны хорошо понимать, как использовать команду du . В отличие от df который выводит информацию об использовании диска смонтированными файловыми системами, команда du дает вам оценку дискового пространства, используемого данными файлами или каталогами.
Сколько свободной оперативной памяти доступно в моей системе Linux? Достаточно ли свободной памяти для установки и запуска новых приложений?
В системах Linux вы можете использовать команду free чтобы получить подробный отчет об использовании памяти системой.
Команда free предоставляет информацию об общем объеме физической памяти и памяти подкачки, а также о свободной и используемой памяти.
Как использовать команду free
Отображение использования памяти в удобочитаемом формате
Отображение использования памяти в других показателях
Отображение итоговых значений столбца
Непрерывно печатать результат
Синтаксис free команды следующий:
free [OPTIONS]
При использовании без какой-либо опции команда free будет отображать информацию о памяти и подкачке в килобайтах. 1 килобайт (КиБ) равен 1024 байтам.
free Вывод будет включать три строки, заголовок, одну строку для памяти и одну для свопа:
В более старых версиях Linux вывод может немного отличаться.
Вот что означает каждый столбец:
total — это число представляет общий объем памяти, который может быть использован приложениями.
used — Используемая память. Он рассчитывается как: used = total - free - buffers - cache
free— Свободная / неиспользуемая память.
shared— этот столбец можно игнорировать, поскольку он не имеет значения. Это здесь только для обратной совместимости.
buff / cache — объединенная память, используемая буферами ядра, а также страничным кешем и блоками. Эта память может быть освобождена в любое время, если это необходимо приложениям.
available— оценка объема памяти, доступного для запуска новых приложений без подкачки.
Если вы хотите, чтобы буферы и кеш отображались в двух отдельных столбцах, используйте параметр -w .
По умолчанию команда free показывает информацию о памяти в килобайтах. Чтобы просмотреть информацию в удобочитаемом формате (обычно в мебибайт и гибибайтах), используйте параметр -h :
Команда free также позволяет вам указать единицы измерения памяти. Допустимые варианты:
b , --bytes — отображать вывод в байтах.
-kilo — отображать вывод в килобайтах (1 КБ = 1000 байт).
-mega — отображать вывод в мегабайтах.
-giga — Показать вывод в гигабайтах.
-tera — Показать вывод в терабайтах.
k , --kibi — Показать вывод в килобайтах. (1 КБ = 1024 байта). Это единица измерения по умолчанию.
m , --mebi — Показать вывод в мегабайтах.
g , --gibi — Показать вывод в гигабайтах.
-tebi — отображать вывод в теробайтах.
-peti — Показать вывод в перобайтах.
-si — вместо 1024 используйте --mebi --si 1000. Например, --mebi --si равно --mega .
Например, чтобы отобразить результат в мегабайтах, введите:
Чтобы отобразить строку, показывающую итоги столбца, используйте параметр -t . Это дает вам сумму памяти и свопа в столбцах total, used и free.
free -h -t
Чтобы постоянно отображать информацию о памяти на экране, вызовите free с параметром -s ( --seconds ), за которым следует число, определяющее задержку.
Например, чтобы распечатывать информацию о памяти каждые пять секунд, вы должны выполнить:
free -s 5
free команда будет продолжать отображать результат, пока вы не нажмете CTRL+C Это похоже на поведение команды watch .
Чтобы отображать результат определенное количество раз, используйте параметр -c ( --count ). В примере ниже команда выведет результат десять раз:
free -s 5 -c 3
Автоматизируйте команду free и запускайте ее непрерывно или периодически Еще одна отличная особенность – возможность автоматизировать команду. Есть два варианта, которые помогают нам настроить этот инструмент:
Есть параметр ‘-s’, которая запускает команду free в течение заданного интервала секунд, пока пользователь не закроет программу (^ + C). Существует также «-c», который можно использовать отдельно или в сочетании с параметром секунд. Если вы введете только «-c» и целое число (n), команда будет запускаться n раз. По умолчанию используются интервалы в одну секунду. Допустим, вы хотите открыть несколько приложений и посмотреть, сколько используется памяти. Для тестового вывода мы будем использовать читаемый человеком формат, используя степени 1000 (Gb) вместо 1024 (GiB). Мы собираемся записать в течение 20 секунд, чтобы проанализировать воздействие. Мы собираем данные каждые 5 секунд, и будем делать это за 4 цикла. Вот этот пример, отформатированный для командной строки и ее вывода:
free -h --si -s 5 -c 4
Это покажет вам только один вывод для команды free, но этот вывод будет изменяться через регулярные промежутки времени.
watch free -h
Процесс установки iostat очень прост. iostat является частью пакета sysstat, который можно установить на вашей соответствующей системе одной из команд ниже:
Ubuntu / Debian
sudo apt install sysstat
IOSTAT инструмент, который доступен через команду iostat. Введите эту команду, чтобы увидеть, как она работает:
iostat
Синтаксис iostat очень простой. Вам достаточно выполнить:
$ iostat опции
устройство
интервал
Параметры устройство и интервал необязательные. Первый указывает по какому устройству показывать статистику, а второй, с каким интервалом обновлять данные. Давайте сначала рассмотрим опции программы, которые могут вам пригодится:
с - отобразить только информацию об использовании процессора;
d - отобразить только информацию об использовании устройств;
h - выводить данные в отчёте в удобном для чтения формате;
k - выводить статистику в килобайтах;
m - выводить статистику в мегабайтах;
o JSON - выводить статистику в формате JSON;
p - вывести статистику по устройству и всех его разделам;
x - вывести расширенную статистику;
y - отображать статистику с момента запуска утилиты, а не системы;
z - спрятать информацию о дисках, у которых нет активности.
Самый простой пример использования утилиты, это запустить её без параметров. Она выведет отчёт с со средней статистикой с момента включения системы до момента запуска программы:
sudo iostat
В первой части отчёта находится информация о загруженности процессора. Для просмотра данных в удобном формате выполните:
sudo iostat -h
Чтобы посмотреть данные по нужному устройству просто укажите это устройство:
sudo iostat /dev/sda
Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией -p:
sudo iostat -p /dev/sda
Чтобы утилита автоматически обновляла данные каждую секунду просто добавьте интервал. Например:
sudo iostat -p /dev/sda 1
Если вы не хотите чтобы утилита суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал:
sudo iostat -y -p /dev/sda 1
Опция «-А», показывает всю информацию, которая может быть отображена с помощью команды mpstat, как показано ниже. Это действительно эквивалентно команде «-I ALL -u -P mpstat ALL» команды:
mpstat -A
Параметр «-P ALL», покажет все индивидуальные процессоры или ядра вместе со статистикой:
mpstat -P ALL
mpstat -P 0
Команда vmstat в Linux выводит статистику использования виртуальной памяти. Ниже приводится ее синтаксис:
В базовом варианте вы просто выполняете команду vmstat без всяких опций.
Procs r: количество запущенных процессов (работающих или ожидающих выполнения). b: количество спящих процессов.
Memory swpd: объем используемой виртуальной памяти. free: объем свободной памяти. buff: количество памяти, используемой в качестве буферов. cache: объем памяти, используемой в качестве кеша. inact: количество неактивной памяти (опция -a). active: количество активной памяти. (опция -a)
Swap si: объем памяти, выгруженный с диска (/s). so: объем памяти, перенесенный на диск (/s).
IO bi: блоки, полученные от блочного устройства (blocks/s). bo: блоки, отправленные на блочное устройство (blocks/s).
System in: количество прерываний в секунду, включая часы. cs: количество переключений контекста в секунду.
CPU Здесь проценты от общего времени процессора. us: время, потраченное на запуск кода, не относящегося к ядру (время пользователя). sy: время, потраченное на выполнение кода ядра (системное время). id: время бездействия. До версии Linux 2.5.41 это включает время ожидания ввода-вывода. wa: время, проведенное в ожидании ввода/вывода. До Linux 2.5.41, включено в idle. st: время, украденное из виртуальной машины. До Linux 2.6.11 неизвестно.
vmstat -a
(active/inactive memory) - активная/неактивная память
vmstat -f
(number of forks since boot) - количество вызовов fork (vfork и т.д.) с момента загрузки
vmstat -d
(disk statistics) - статистика диска
vmstat -D
(summarize disk statistics) - (общая статистика диска)
Команда, вызванная с опцией -s, записывает в стандартный поток вывода итоговый отчет, который содержит суммарные значения показателей использования памяти, подсчитанные за все время, прошедшее с момента инициализации системы.
Эту команду рекомендуется вызывать дважды: до запуска оцениваемой рабочей схемы и после выполнения этой рабочей схемы. Дальше нужно оценить разницу между значениями, полученными в двух отчетах команды.
vmstat --help
vmstat 1 - 60
- через какое количество секунд выводить информацию
Выводит краткую сводку о работающих в системе в данный момент пользователях (залогиненных пользователях), а также о том, какие процессы у них запущены
В таблице для каждого пользователя выводятся следующие поля:
Не выводить заголовок у таблицы.
Игнорировать имена пользователей при определении времени текущего процесса и времени CPU.
Использовать сокращенный формат вывода. Не выводить колонки JCPU и PCPU.
Включить или выключить вывод поля from, которое соответствует имени удаленного хоста (remote hostname). В зависимости от дистрибутива Linux (версии утилиты w), поле from может выводиться или не выводиться по умолчанию.
Выводить в поле from IP-адрес вместо имени хоста (hostname), если это возможно.
Выводить информацию в старом формате. Время, которое меньше 1 минуты, не выводится.
Вывести версию утилиты w.
sudo apt install htop
Как просмотреть все процессы в Linux
Команду htop можно запускать как с правами обычного пользователя:
htop
Так и с привилегиями суперпользователя, для этого используйте sudo:
sudo htop
Чтобы программа выводила новые данные раз в 5 секунд:sudo htop -d 50
Для вывода процессов в виде дерева используйте опцию -t:sudo htop -t