lsof

Oct, 24, 2025

lsof

Утилита lsof (сокращение от List Open Files) предназначена для отображения списка открытых файлов и связанных с ними процессов в операционных системах UNIX/Linux.
В контексте UNIX-подобных систем, всё является файлом — как обычные файлы и каталоги, так и сокеты, каналы, устройства, и даже сетевые соединения.
Таким образом, lsof является мощным инструментом для анализа ресурсов ввода-вывода, сетевых портов и взаимодействий процессов.

📖 man lsof (man7.org)


🧩 Академическое описание

Утилита lsof взаимодействует с таблицами открытых файловых дескрипторов (file descriptor tables) процессов, извлекая сведения о:

  • PID (Process ID) — идентификатор процесса, которому принадлежит файл;
  • FD (File Descriptor) — файловый дескриптор, представляющий ссылку на открытую сущность ядра;
  • TYPE — тип объекта (обычный файл, каталог, сокет, pipe и т.д.);
  • DEVICE / SIZE / NODE — метаданные устройства и индексного дескриптора (inode);
  • NAME — путь или описание ресурса.

⚙️ Базовый синтаксис

lsof [опции] [файл|каталог|порт]

Пример простого вызова:

lsof

Отобразит все открытые файлы всех процессов в системе. Для фильтрации используются аргументы и опции.


🔍 Часто используемые опции

ОпцияНазначениеПример
-p <PID>Показать файлы, открытые конкретным процессомlsof -p 1234
-u <user>Отфильтровать по пользователюlsof -u sasha
+D <dir>Рекурсивно просканировать каталогlsof +D /home/sasha
-iОтобразить сетевые соединенияlsof -i
-i :<port>Проверить, что использует конкретный портlsof -i :8080
-tВывести только PID (удобно для скриптов)lsof -t -i :22

🌐 Сетевые соединения и сокеты

Утилита lsof позволяет наблюдать за сетевыми сокетами — объектами ядра, инкапсулирующими TCP/UDP-соединения.
Каждый сокет имеет собственный файловый дескриптор, отображаемый в lsof как тип IPv4 или IPv6.

lsof -iTCP -sTCP:LISTEN

Покажет процессы, прослушивающие TCP-порты (аналогично netstat -tlnp).


🧰 Примеры практического использования

🔸 Найти, какой процесс использует порт 80

sudo lsof -i :80

🔸 Проверить, кто держит открытым каталог

lsof +D /mnt/usb

🔸 Завершить процессы, блокирующие файл

kill -9 $(lsof -t /path/to/file)
lsof | Aleksandr Suprun