TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #60 5.65K
Разбор команд: lsof

Ну что, братья-айтишники, сегодня говорим про команду lsof. Решил ее рассмотреть довольно спонтанно, т.к. также спонтанно она мне пригодилась)

Как мы знаем, в linux немалую роль играют файлы. Многие говорят, что все в linux - файл. В своей основе, утилита lsof (list open files) позволяет просматривать список открытых файлов и выступает в роли интерфейса для мониторинга виртуальной файловой системы proc.

Подробнее про файловую систему proc:

Данная файловая система состоит из набора каталогов и файлов, смонтированных в одноименной директории. Называется она виртуальной потому, что фактически не находятся на диске и заполняется ядром на лету. Нужна она, в основном, для того, чтобы на стороне пользователя (через файлы) просматривать информацию о ядре и его структурах.

Говоря простым языком, анализ VFS (virtual file system) proc позволяет ответить на следующие вопросы:

1. Сколько процессов запущено в системе и кто ими владеет?
2. Какие файлы открыты процессом?
3. Какие файлы в данный момент заблокированы и какие процессы удерживают эти блокировки?
4. Какие сокеты используются в системе?

Разбор вывода команды lsof:

Давайте начнем с простого - без дополнительных флагов запустим утилиту и проанализируем ее вывод:


$ lsof

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 145180 147164 /sbin/init
init 1 root 4w FIFO 0,8 0t0 8449 pipe
...


В результате мы получаем пулл информации про активные утилиты и используемые ими ресурсы (файлы, каталоги, сокеты и т.д.).

Спектр возможных значений для каждого поля тут довольно широк, поэтому за детальной информацией предлагаю обратиться к мануалу.

Давайте на конкретном примере посмотрим, о чем нас проинформирует lsof:


COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
prog_wr 9957 xodefender  3w   REG   253,0 46442 1445679 /home/xodefender/input.txt


1. COMMAND - название утилиты, которая использует ресурс .

2. PID - идентификатор процесса для программы prog_wr.

3. USER - имя пользователя, которому принадлежит процесс.

4. FD - поле, предоставляющее информацию о ресурсе, который использует процесс. Значение поля может состоять из нескольких частей. В случае принадлежности к зарезервированному типу, значениями могут быть: cwd, rtd, txt, mem и т.д.

Если же, как в данном случае, речь идет о ресурсе, к которому можно обратиться по локальному дескриптору, структура может быть следующей: порядковый номер дескриптора (3) + права доступа (w - открыт на запись).

5. TYPE - тип ресурса. В данном случае используется обычный файл (REG). Также, ресурсами могут быть: директории (DIR), каналы передачи данных (FIFO), сетевые сокеты (INET) и т.д.

6. DEVICE - номер устройства, к которому относится ресурс (в формате major:minor). Обычно, информация берется об устройствах из каталога dev.

7. SIZE/OFF - размер файла input.txt в байтах. Если размер ресурса получить не удается, значением поля будет его отступ в памяти.

8. NODE - номер ресурса в таблице индексного дескриптора "inode". В нашем случае, файл input.txt числится под номером 1445679 в общесистемной таблице.

9. NAME - имя ресурса, представленное абсолютным путем.

Примеры использования команды lsof:

Вот и мне эта программка пригодилась для того, чтобы понять, какие процессы используют интересующую меня динамическую библиотеку.

Если у вас уже есть подозрения и вы знаете PID процесса, можно воспользоваться флагом '-p', который отобразит информацию только для указанного процесса:


$ lsof -p 23708

vlc 23708 root mem REG 8,2 264888 2365462 /usr/lib64/vlc/plugins/codec/libomxil_plugin.so


Если же у вас 0 идей, можете прямо прописать путь к целевому ресурсу и утилита вам покажет все процессы, которые его используют:


$ lsof ./libomxil_plugin.so

vlc 23708 root mem REG 8,2 264888 2365462 ./libomxil_plugin.so
  • 👍 25
  • ❤‍🔥 9
  • 🔥 8
  • ❤ 1
  • 🥰 1
  • 👾 1
More from @linuxcamp_tg
  1. Oct 9, 2026🤖Обходим «белый список» вместе с STRELKA Думали, что белые списки не обходятся когда глуш…
  2. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  3. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  4. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  5. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  6. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →