top
, или — что немного лучше — командой htop
. А как быть, если надо получить данные о состоянии дисковой подсистемы? Решить эту задачу помогут специализированные инструменты, некоторые из которых распространены далеко не так широко, как top
.![](https://habrastorage.org/webt/ix/jz/xm/ixjzxmj0f3pioslrwgjlwne2o30.jpeg)
Утилита iotop
Утилита
iotop
очень сильно похожа на top
. Она выводит сведения об общем и текущем количестве операций обращения к диску для файловой системы. Кроме того, она сообщает о том, что именно интенсивнее всего нагружает диск. Экран iotop
, на первый взгляд, переполнен информацией.![](https://habrastorage.org/getpro/habr/post_images/b1b/599/f78/b1b599f784b11d8e8890055f280a77fe.png)
Работа с iotop
Вот совет по работе с этой утилитой. Если взглянуть на нижнюю часть экрана — там можно найти некоторые команды, вызываемые нажатиями на клавиши клавиатуры. Например, клавиша
O
скрывает (или отображает) все неактивные процессы. Это позволяет немного улучшить внешний вид сведений, выводимых iotop
.![](https://habrastorage.org/getpro/habr/post_images/771/f7b/208/771f7b2083d6de4e1796a0cf490ef83c.png)
Сведения об использовании дисковой подсистемы активными процессами
Того же эффекта можно добиться, запустив
iotop
с ключом -o
. Обратите внимание на то, что другие клавиатурные команды позволяют, например, выводить сведения о потоках, а не о процессах, менять режим вывода данных, задавать классы и приоритеты ввода-вывода процессов (ionice
).Утилита iostat
Если вас больше интересуют данные, относящиеся к самим дискам, а не к процессам или потокам, можете попробовать команду
iostat
. Она тоже выводит некоторые данные о процессах, но они представлены в обобщённом виде.![](https://habrastorage.org/getpro/habr/post_images/559/9d2/52b/5599d252b799dfd963aa7724e26b5112.png)
Работа с iostat
Эта команда запускается, собирает данные и выводит их, не обновляя в режиме реального времени. Если нужно периодически её перезапускать — можно, при её запуске, указать промежуток времени между получениями новых отчётов, и, что необязательно, общее количество перезапусков. При этом, если нужно, можно воспользоваться ключом командной строки
-t
для получения сведений о времени.iostat -t 5
Правда, это приводит к прокрутке выходных данных программы. Если вы занимаетесь мониторингом дисковой активности, то, возможно, вам лучше подойдёт такой вариант запуска
iostat
:watch -n 5 iostat
Если запустить утилиту с ключом
-x
— можно получить более подробные сведения о дисках. Флаг -z
позволяет отключить вывод сведений об устройствах, на которых нет данных.Утилита duf
Вы, вероятно, не найдёте в своей системе утилиту
duf
. Если это так — можете установить её с GitHub. Те же результаты, правда, можно получить, воспользовавшись df
и ещё некоторыми командами, но преимущество duf
заключается в том, что эта программа представляет данные в удобном для просмотра виде.![](https://habrastorage.org/getpro/habr/post_images/4fa/833/85a/4fa83385a5e9668e2d2d305f16264c03.png)
Работа с 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
.![](https://habrastorage.org/getpro/habr/post_images/144/742/1e7/1447421e7682db413811657b35fdb1ba.png)
Работа с atop
Для сортировки процессов по уровню использования дисков можно воспользоваться клавишей
D
. Это — полезный инструмент.Итоги
Для того чтобы получить сведения о дисках в Linux можно применить десятки различных инструментов. Собственно говоря, нечто подобное справедливо и для решения многих других задач. Если вам интересны подробности о том, что именно выводит
htop
(похожие данные формируют, кроме того, top
и atop
) — взгляните на этот материал.Как вы мониторите дисковую подсистему в Linux?
![](https://habrastorage.org/webt/ou/g5/kh/oug5kh6sjydt9llengsiebnp40w.png)
![](https://habrastorage.org/webt/3p/iw/1j/3piw1j3wd_cgmzq9sefgferaumu.png)
arheops
Еще полезная ncdu
и она есть почти везде в репозиториях.
Hodus
Давно ей на mac пользуюсь. Позволяет понять чем занят диск.
Еще в дополнение к ncdu добавлю FDUPES (поиск дубликатов) и ее более удобный аналог с графическим интерфейсом dupeGuru.