Команды Linux · 5 min read · Sep 16, 2025

Учебник по команде Linux lsof для начинающих (15 примеров)

Команда Linux lsof показывает в своем выводе информацию о файлах, которые открыты процессом. В этой статье мы обсудим инструмент Linux lsof, используя 15 простых примеров. Обратите внимание, что все примеры, упомянутые в этом учебнике, были протестированы на Ubuntu 22.04 LTS, но они также будут работать на других дистрибутивах Linux, таких как Debian, Fedora и CentOS.

О команде lsof

Если вы хотите быстро увидеть имена файлов, которые были открыты конкретным процессом (или всеми процессами), команда lsof позволяет вам это сделать. Открытый файл может быть обычным файлом или каталогом, библиотекой, специальным файлом или блочным устройством, специальным символьным файлом, исполняемой текстовой ссылкой или даже потоком или сетевым файлом. Вы также можете перечислить процессы по номеру порта. Если вы не вошли в систему как пользователь root, вам может потребоваться добавить ‘sudo’ к командам.

Установка команды Linux lsof

Большинство дистрибутивов Linux поставляются с предустановленным lsof. Если он еще не установлен на вашей системе, используйте следующие команды для установки lsof:

На Ubuntu и Debian:

$ sudo apt install lsof

На CentOS и Fedora:

$ dnf install lsof

1. Как перечислить все открытые файлы

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

lsof

Например, вот скриншот части вывода, который сгенерировала вышеуказанная команда на моей системе:

Как перечислить все открытые файлы в Linux

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

2. Как перечислить файлы, открытые процессами, принадлежащими конкретному пользователю

Инструмент также позволяет вам перечислить файлы, открытые процессами, принадлежащими конкретному пользователю. Эта функция доступна с помощью командной опции -u.

lsof -u [имя-пользователя]

Например:

lsof -u administrator

Как перечислить файлы, открытые процессами, принадлежащими конкретному пользователю

3. Как перечислить файлы на основе их интернет-адреса

Инструмент позволяет вам перечислить файлы на основе их интернет-адреса. Это можно сделать с помощью командной опции -i. Например, если вы хотите, вы можете отображать файлы IPv4 и IPv6 отдельно. Для IPv4 выполните следующую команду:

lsof -i 4

Например:

Как перечислить файлы на основе их интернет-адреса

Аналогично, для IPv6 выполните следующую команду:

lsof -i 6

Например:

lsof -i 6

Слушатели LSOF IPv6

4. Как перечислить все файлы по имени приложения

Опция командной строки -c позволяет вам получить все файлы, открытые по имени программы.

$ lsof -c apache

Вам не нужно использовать полное имя программы, так как будут показаны все программы, начинающиеся со слова ‘apache’. Таким образом, в нашем случае будут перечислены все процессы приложения ‘apache2’.

Получить открытые файлы по имени программы

Опция -c по сути является просто сокращением для двух команд:

$ lsof | grep apache

5. Как перечислить файлы, специфичные для процесса

Инструмент также позволяет вам отображать открытые файлы на основе идентификационных номеров процессов (PID). Это можно сделать с помощью командной опции -p.

lsof -p [PID]

Например:

lsof -p 856

Как перечислить файлы, специфичные для процесса

Далее, вы также можете исключить конкретные PID из вывода, добавив символ ^ перед ними. Чтобы исключить конкретный PID, вы можете выполнить следующую команду:

lsof -p [^PID]

Например:

lsof -p ^1

Как перечислить файлы, специфичные для процесса - результат

Как вы можете видеть на скриншоте выше, процесс с идентификатором 1 исключен из списка.

6. Как перечислить идентификаторы процессов, которые открыли конкретный файл

Инструмент позволяет вам перечислить идентификаторы процессов, которые открыли конкретный файл. Это можно сделать с помощью командной опции -t.

$ lsof -t [имя-файла]

Например:

$ lsof -t /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0

Как перечислить идентификаторы процессов, которые открыли конкретный файл

7. Как перечислить все открытые файлы в каталоге

Если хотите, вы также можете заставить lsof искать все открытые экземпляры каталога (включая все файлы и каталоги, которые он содержит). Эта функция доступна с помощью командной опции +D.

$ lsof +D [путь-к-каталогу]

Например:

$ lsof +D /usr/lib/locale

Как ограничить lsof определенным каталогом

8. Как перечислить все интернет- и x.25 (HP-UX) сетевые файлы

Это возможно с помощью командной опции -i, которую мы описали ранее. Просто используйте ее без каких-либо аргументов.

$ lsof -i

Как перечислить все интернет- и x.25 (HP-UX) сетевые файлы

9. Узнайте, какая программа использует порт

Ключ -i команды позволяет вам найти процесс или приложение, которое слушает на конкретном номере порта. В следующем примере я проверил, какая программа использует порт 80.

$ lsof -i :80

Вместо номера порта вы можете использовать имя службы, как указано в файле /etc/services. Пример, чтобы проверить, какое приложение слушает на порту HTTPS (443):

$ lsof -i :https

Результат:

Список процессов по открытому порту или службе

Вышеуказанные примеры проверят как TCP, так и UDP. Если вы хотите проверить только TCP или UDP, добавьте слово ‘tcp’ или ‘udp’. Например, какое приложение использует порт 25 TCP:

$ lsof -i tcp:25

или какое приложение использует UDP порт 53:

$ lsof -i udp:53

10. Как перечислить открытые файлы на основе диапазона портов

Утилита также позволяет вам перечислить открытые файлы на основе конкретного порта или диапазона портов. Например, чтобы отобразить открытые файлы для порта 1-1024, используйте следующую команду:

$ lsof -i :1-1024

Как перечислить открытые файлы на основе диапазона портов

11. Как перечислить открытые файлы на основе типа соединения (TCP или UDP)

Инструмент позволяет вам перечислить файлы на основе типа соединения. Например, для специфичных файлов UDP используйте следующую команду:

$ lsof -i udp

Как перечислить открытые файлы на основе типа соединения (TCP или UDP)

Аналогично, вы можете заставить lsof отображать специфичные для TCP файлы.

12. Как заставить lsof перечислять родительский PID процессов

Существует также опция, которая заставляет lsof перечислять идентификационный номер родительского процесса (PPID) в выводе. Опция, о которой идет речь, это -R.

$ lsof -R

Чтобы получить информацию о PPID для конкретного PID, вы можете выполнить следующую команду:

$ lsof -p [PID] -R

Например:

$ lsof -p 3 -R

Как заставить lsof перечислять родительский PID процессов

13. Как найти сетевую активность по пользователю

Используя комбинацию командных опций -i и -u, мы можем искать все сетевые соединения пользователя Linux. Это может быть полезно, если вы проверяете систему, которая могла быть взломана. В этом примере мы проверяем всю сетевую активность пользователя www-data:

$ lsof -a -i -u www-data

Найти сетевую активность по пользователю в Linux

14. Перечислить все файлы, отображаемые в памяти

Эта команда перечисляет все файлы, отображаемые в памяти на Linux.

$ lsof -d mem

Найти файлы, отображаемые в памяти

15. Перечислить все NFS файлы

Опция -N показывает вам список всех файлов NFS (Сетевой файловой системы).

$lsof -N

Заключение

Хотя lsof предлагает множество опций, те, которые мы обсудили здесь, должны быть достаточными, чтобы начать. Как только вы закончите практиковаться с ними, перейдите на страницу справки инструмента, чтобы узнать больше о нем. О, и если у вас есть какие-либо сомнения или вопросы, оставьте комментарий ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.