Команды 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 lsof1. Как перечислить все открытые файлы
Чтобы перечислить все открытые файлы, выполните команду lsof без каких-либо аргументов:
lsofНапример, вот скриншот части вывода, который сгенерировала вышеуказанная команда на моей системе:

Первый столбец представляет процесс, в то время как последний столбец содержит имя файла. Для получения подробной информации обо всех столбцах обратитесь к странице справки команды.
2. Как перечислить файлы, открытые процессами, принадлежащими конкретному пользователю
Инструмент также позволяет вам перечислить файлы, открытые процессами, принадлежащими конкретному пользователю. Эта функция доступна с помощью командной опции -u.
lsof -u [имя-пользователя]
Например:
lsof -u administrator

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

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

4. Как перечислить все файлы по имени приложения
Опция командной строки -c позволяет вам получить все файлы, открытые по имени программы.
$ lsof -c apacheВам не нужно использовать полное имя программы, так как будут показаны все программы, начинающиеся со слова ‘apache’. Таким образом, в нашем случае будут перечислены все процессы приложения ‘apache2’.

Опция -c по сути является просто сокращением для двух команд:
$ lsof | grep apache5. Как перечислить файлы, специфичные для процесса
Инструмент также позволяет вам отображать открытые файлы на основе идентификационных номеров процессов (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

8. Как перечислить все интернет- и x.25 (HP-UX) сетевые файлы
Это возможно с помощью командной опции -i, которую мы описали ранее. Просто используйте ее без каких-либо аргументов.
$ lsof -i

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:5310. Как перечислить открытые файлы на основе диапазона портов
Утилита также позволяет вам перечислить открытые файлы на основе конкретного порта или диапазона портов. Например, чтобы отобразить открытые файлы для порта 1-1024, используйте следующую команду:
$ lsof -i :1-1024

11. Как перечислить открытые файлы на основе типа соединения (TCP или UDP)
Инструмент позволяет вам перечислить файлы на основе типа соединения. Например, для специфичных файлов UDP используйте следующую команду:
$ lsof -i udp

Аналогично, вы можете заставить lsof отображать специфичные для TCP файлы.
12. Как заставить lsof перечислять родительский PID процессов
Существует также опция, которая заставляет lsof перечислять идентификационный номер родительского процесса (PPID) в выводе. Опция, о которой идет речь, это -R.
$ lsof -RЧтобы получить информацию о PPID для конкретного PID, вы можете выполнить следующую команду:
$ lsof -p [PID] -RНапример:
$ lsof -p 3 -R
13. Как найти сетевую активность по пользователю
Используя комбинацию командных опций -i и -u, мы можем искать все сетевые соединения пользователя Linux. Это может быть полезно, если вы проверяете систему, которая могла быть взломана. В этом примере мы проверяем всю сетевую активность пользователя www-data:
$ lsof -a -i -u www-data
14. Перечислить все файлы, отображаемые в памяти
Эта команда перечисляет все файлы, отображаемые в памяти на Linux.
$ lsof -d mem
15. Перечислить все NFS файлы
Опция -N показывает вам список всех файлов NFS (Сетевой файловой системы).
$lsof -NЗаключение
Хотя lsof предлагает множество опций, те, которые мы обсудили здесь, должны быть достаточными, чтобы начать. Как только вы закончите практиковаться с ними, перейдите на страницу справки инструмента, чтобы узнать больше о нем. О, и если у вас есть какие-либо сомнения или вопросы, оставьте комментарий ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.