Если, работая в Linux, нужно быстро взглянуть на сведения о работающих процессах — можно воспользоваться командой top
, или — что немного лучше — командой htop
. А как быть, если надо получить данные о состоянии дисковой подсистемы? Решить эту задачу помогут специализированные инструменты, некоторые из которых распространены далеко не так широко, как top
.
Утилита iotop
Утилита iotop
очень сильно похожа на top
. Она выводит сведения об общем и текущем количестве операций обращения к диску для файловой системы. Кроме того, она сообщает о том, что именно интенсивнее всего нагружает диск. Экран iotop
, на первый взгляд, переполнен информацией.
Работа с iotop
Вот совет по работе с этой утилитой. Если взглянуть на нижнюю часть экрана — там можно найти некоторые команды, вызываемые нажатиями на клавиши клавиатуры. Например, клавиша O
скрывает (или отображает) все неактивные процессы. Это позволяет немного улучшить внешний вид сведений, выводимых iotop
.
Сведения об использовании дисковой подсистемы активными процессами
Того же эффекта можно добиться, запустив iotop
с ключом -o
. Обратите внимание на то, что другие клавиатурные команды позволяют, например, выводить сведения о потоках, а не о процессах, менять режим вывода данных, задавать классы и приоритеты ввода-вывода процессов (ionice
).
Утилита iostat
Если вас больше интересуют данные, относящиеся к самим дискам, а не к процессам или потокам, можете попробовать команду iostat
. Она тоже выводит некоторые данные о процессах, но они представлены в обобщённом виде.
Работа с iostat
Эта команда запускается, собирает данные и выводит их, не обновляя в режиме реального времени. Если нужно периодически её перезапускать — можно, при её запуске, указать промежуток времени между получениями новых отчётов, и, что необязательно, общее количество перезапусков. При этом, если нужно, можно воспользоваться ключом командной строки -t
для получения сведений о времени.
iostat -t 5
Правда, это приводит к прокрутке выходных данных программы. Если вы занимаетесь мониторингом дисковой активности, то, возможно, вам лучше подойдёт такой вариант запуска iostat
:
watch -n 5 iostat
Если запустить утилиту с ключом -x
— можно получить более подробные сведения о дисках. Флаг -z
позволяет отключить вывод сведений об устройствах, на которых нет данных.
Утилита duf
Вы, вероятно, не найдёте в своей системе утилиту duf
. Если это так — можете установить её с GitHub. Те же результаты, правда, можно получить, воспользовавшись df
и ещё некоторыми командами, но преимущество duf
заключается в том, что эта программа представляет данные в удобном для просмотра виде.
Работа с duf
При запуске этой утилиты можно воспользоваться опциями командной строки, которые позволяют скрывать устройства, задавать ширину таблиц, выводимых на экране, по-разному сортировать выводимые данные. Ещё можно указать максимальную ширину таблиц, генерируемых программой. Подробности о работе с duf
можно узнать, запустив утилиту с ключом --help
.
Вывод сведений об открытых файлах с помощью lsof
Если нужно узнать о том, какие именно файлы открыты в системе, сделать это можно с помощью команды lsof
. Она выводит подробную информацию, а в работающих системах обычно открыто очень много файлов. Поэтому lsof
обычно используют, указывая имя файла, или комбинируя этот приём с grep
. Это позволяет узнать сведения только о том, что нужно.
При использовании lsof
нужно помнить о том, что шаблоны тут, по умолчанию, не работают. Поэтому следующая команда выведет лишь сведения о директории /home/alw
. А вот, например, сведения о процессах, которые открыли какие-нибудь файлы в этой директории, такая команда не выведет.
lsof /home/alw
Для того чтобы это изменить, можно запустить lsof
с ключом -d
или -D
. Ключ, представленный буквой в нижнем регистре, приводит к поиску директорий и файлов на верхнем уровне. Ключ -D
выполняет рекурсивный поиск. Эта команда поддерживает и много других опций, которые можно применять, например, для поиска файлов, открытых пользователем с заданным ID, или для поиска по заданному имени команды.
Дополнительный инструмент: atop
Одной из замен команды top
является atop
. Хотя эта команда и не нацелена исключительно на мониторинг дисковых операций, она даёт сведения о том, как процессы пользуются дисками, и, кроме того, предоставляет некоторые сводные сведения. Обычно после запуска atop
в верхней части формируемого ей вывода имеется строка DSK
, в которой присутствуют сведения о диске. Эти данные, по мере приближения уровня использования диска к 100%, выделяются красным цветом. Данные, выводимые в нижней части, похожи на те, что даёт команда top
.
Работа с atop
Для сортировки процессов по уровню использования дисков можно воспользоваться клавишей D
. Это — полезный инструмент.
Итоги
Для того чтобы получить сведения о дисках в Linux можно применить десятки различных инструментов. Собственно говоря, нечто подобное справедливо и для решения многих других задач. Если вам интересны подробности о том, что именно выводит htop
(похожие данные формируют, кроме того, top
и atop
) — взгляните на этот материал.
Как вы мониторите дисковую подсистему в Linux?
Автор: ru_vds