Поиск по сайту:

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


На этой странице

  1. О команде lsof
  2. Установить Linux с помощью команды lsof
  3. 1. Как вывести список всех открытых файлов
  4. 2. Как составить список файлов, открытых процессами, принадлежащими конкретному пользователю
  5. 4. Как вывести список всех файлов по имени приложения
  6. 5. Как составить список файлов, специфичных для процесса
  7. 6. Как получить список идентификаторов процессов, открывших определенный файл
  8. 7. Как вывести список всех открытых файлов в каталоге
  9. 8. Как составить список всех сетевых файлов Интернета и x.25 (HP-UX)
  10. 9. Узнайте, какая программа использует порт
  11. 10. Как вывести список открытых файлов на основе диапазона портов
  12. 11. Как составить список открытых файлов в зависимости от типа соединения (TCP или UDP)
  13. 12. Как сделать список lsof Parent PID процессов
  14. 13. Как найти сетевую активность по пользователю
  15. 14. Список всех отображаемых в память файлов
  16. 15. Список всех файлов NFS
  17. Заключение

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

О команде lsof

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

Установить линукс командой lsof

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

В Ubuntu и Debian:

$ sudo apt install lsof

На CentOS и Fedora:

$ dnf install lsof

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

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

lsof

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

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

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

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

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

Например:

lsof -u администратор

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

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

lsof -i 4

Например:

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

lsof -i 6

Например:

lsof -я 6

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

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

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

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

$ lsof -t [file-name]

Например:

$ 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 -я

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 -я удп

Точно так же вы можете заставить 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 предлагает множество опций, тех, которые мы обсуждали здесь, должно быть достаточно для начала работы. После того, как вы попрактикуетесь с ними, перейдите на справочную страницу инструментов, чтобы узнать больше об этом. О, и если у вас есть какие-либо сомнения и вопросы, оставьте комментарий ниже.