В нашей продолжающейся серии статей
о системе Linux мы рассмотрим основные утилиты командной строки, которые предоставляют информацию об оборудовании и
состоянии системы. После наших предыдущих обсуждений lscpu
, lsusb
, dmidecode
и lspci
мы теперь обратим внимание
на lsof
и lsblk
. Эти инструменты особенно полезны для поиска открытых файлов, активных сетевых подключений и
смонтированных блочных устройств в вашей системе Fedora Linux.
Поиск открытых файлов с помощью lsof
lsof
(list open files) - мощный инструмент командной строки.
Поскольку почти все в Linux рассматривается как файл, lsof
обеспечивает детальное представление о многих частях вашей системы. Он перечисляет какие файлы используются, какие
процессы к ним обращаются и даже какие сетевые порты открыты (см., например, Wikipedia
о сетевых сокетах
для получения дополнительной информации).
Пример использования
Для начала просто выполните команду lsof
, что бы получить список открытых в системе файлов:
|
|
sudo
использовался для расширенных привилегий. Это нужно, что бы получить информацию о файла, которые не открывались
процессами вашего пользователя. Вывод команды содержит множество информации, которая может ошеломить. Мы собираемся
сузить вывод до специфической информации о некоторых распространенных вариантах использования в следующих примерах.
Пример 1: поиск открытых пользователем или процессом файлов
lsof может быть очень полезен, что бы определить какие файлы открыты конкретным пользователем или процессом.
Вывести список файлов открытых конкретным пользователем можно так:
|
|
Такая команда вернет список открытых файлов занятых указанным пользователем. Например:
|
|
Вы увидите такую информацию как: идентификатор процесса (PID), файловый дескриптор, тип файла и его путь.
Для фильтрации вывода по процессу нужно передать флаг -p
:
|
|
Это особенно полезно для устранения неполадок, связанных с определенными процессами или когда вам нужно проверить, какие
файлы служба держит открытыми. Используйте sudo
, если процесс не принадлежит вашему пользователю.
Пример вывода:
|
|
Пример 2: идентификация открытых сетевых подключений
Благодаря возможности показывать список сетевых подключений, lsof
так же становится удобным инструментом для
диагностики сетевых проблем, поскольку он доступен обычно даже в защищенных и минимальных системах.
To display all open network connections (TCP/UDP sockets), run: Что бы показать все открытые сетевые соединения ( TCP/UDP сокеты), выполните:
|
|
Команда выведет список активных интернет соединений вместе с используемым для них протоколом, портом и информацией о процессе.
Вы можете отфильтровать вывод для специфического протокола (например, TCP или UDP), включить или исключить IPv4 и IPv6,
а так же комбинировать несколько значений (раздел примеров man lsof
предоставляет много полезной информации, включая
отрицание):
|
|
Для подключений связанных с определенным портом:
|
|
Например, вывести список соединений к порту 22 (SSH):
|
|
Эта информация может иметь решающее значение для выявления несанкционированных подключений или простого мониторинга сетевой активности в системе с целью отладки.
Исследование блочных устройств с помощью lsblk
Другой полезный инструмент - lsblk
, который показывает информацию о все доступных в вашей
системе блочных устройствах.
Блочные устройства включают в себя жесткие диски (HDD), SSD и USB-накопители. Эта команда обеспечивает древовидное
представление, что помогает вам понять взаимосвязи между разделами, устройствами и их точками монтирования.
Пример использования
Запуск lsblk
без каких-либо параметров предоставляет четкую иерархическую структуру блочных устройств:
|
|
Здесь отображаются все блочные устройства в древовидной структуре включая их размер, тип (диск или раздел) и точку монтирования (если применимо).
Для более глубокого изучения файловых систем на ваших блочных устройствах используйте флаг -f
:
|
|
При этом будут отображены не только блочные устройства, но и сведения о файловых системах на каждом разделе, включая
тип (например, ext4
, vfat
, swap
), UUID
и текущие точки монтирования.
Если вам нужно меньше информации о самих устройствах (без отображения разделов или точек монтирования), будет полезен
параметр -d
:
|
|
Также есть опция -J или –json. Если используется, команда выводит информацию в формате JSON. Это обеспечивает структурированное представление, которое особенно полезно для сценариев и автоматизации.
Примеры вывода с моего ноутбука (некоторая длинная информация, например UUID, удалена для удобства чтения):
|
|
Заключение
Команды lsof
и lsblk
предоставляют информацию об использовании файлов, сетевой активности и структурах блочных
устройств. Независимо от того, отслеживаете ли вы открытые дескрипторы файлов, диагностируете ли сетевые соединения,
просматриваете устройства хранения данных, устраняете ли вы неполадки, оптимизируете или просто любопытствуете эти
инструменты предоставляют ценные данные, которые помогут вам лучше понять и управлять вашей средой Fedora Linux.
Увидимся в следующий раз, когда мы рассмотрим более полезные инструменты командной строки для просмотра информации и
как их использовать.