img

Нужно знать: утилита lsof в Linux

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

В этой статье мы объясним, как узнать, кто использует тот или иной файл в Linux. Это поможет вам узнать системного пользователя или процесс, который использует открытый файл.


Как узнать, кто использует файл в Linux?

утилита lsof в Linux

Мы можем использовать команду lsof (которая является аббревиатурой от List Of Opened Files), чтобы узнать, использует ли кто-то файл, и если да, то кто. Он читает память ядра в поиске открытых файлов и перечисляет все открытые файлы. В этом случае открытый файл может быть обычным файлом, каталогом, специальным файлом блока, специальным файлом символов, потоком, сетевым файлом и многими другими, поскольку в Linux все является файлом.

Lsof используется в файловой системе, чтобы определить, кто использует какие-либо файлы в этой файловой системе. Вы можете запустить команду lsof в файловой системе Linux, и выходные данные идентифицируют владельца и информацию о процессах для процессов, использующих файл, как показано в следующих выходных данных.

$ lsof /dev/null

Список всех открытых файлов в Linux

COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd   1480 merionet    0r   CHR    1,3      0t0    6 /dev/null
sh        1501 merionet    0r   CHR    1,3      0t0    6 /dev/null
sh        1501 merionet    1w   CHR    1,3      0t0    6 /dev/null
dbus-daem 1530 merionet    0u   CHR    1,3      0t0    6 /dev/null
xfce4-ses 1603 merionet    0r   CHR    1,3      0t0    6 /dev/null
xfce4-ses 1603 merionet    1w   CHR    1,3      0t0    6 /dev/null
at-spi-bu 1604 merionet    0r   CHR    1,3      0t0    6 /dev/null
dbus-daem 1609 merionet    0u   CHR    1,3      0t0    6 /dev/null
at-spi2-r 1611 merionet    0u   CHR    1,3      0t0    6 /dev/null
xfconfd   1615 merionet    0u   CHR    1,3      0t0    6 /dev/null
xfwm4     1624 merionet    0r   CHR    1,3      0t0    6 /dev/null
xfwm4     1624 merionet    1w   CHR    1,3      0t0    6 /dev/null
xfce4-pan 1628 merionet    0r   CHR    1,3      0t0    6 /dev/null
xfce4-pan 1628 merionet    1w   CHR    1,3      0t0    6 /dev/null
Thunar    1630 merionet    0r   CHR    1,3      0t0    6 /dev/null
Thunar    1630 merionet    1w   CHR    1,3      0t0    6 /dev/null
xfdesktop 1632 merionet    0r   CHR    1,3      0t0    6 /dev/null
xfdesktop 1632 merionet    1w   CHR    1,3      0t0    6 /dev/null
....

Чтобы вывести список файлов, открытых для конкретного пользователя, выполните следующую команду: замените merionet вашим именем пользователя.

$ lsof -u merionet

Список файлов, открытых пользователем:

COMMAND    PID    USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd   1480 merionet  cwd       DIR                8,3      4096          2 /
systemd   1480 merionet  rtd       DIR                8,3      4096          2 /
systemd   1480 merionet  txt       REG                8,3   1595792    3147496 /lib/systemd/systemd
systemd   1480 merionet  mem       REG                8,3   1700792    3150525 /lib/x86_64-linux-gnu/libm-2.27.so
systemd   1480 merionet  mem       REG                8,3    121016    3146329 /lib/x86_64-linux-gnu/libudev.so.1.6.9
systemd   1480 merionet  mem       REG                8,3     84032    3150503 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0
systemd   1480 merionet  mem       REG                8,3     43304    3150514 /lib/x86_64-linux-gnu/libjson-c.so.3.0.1
systemd   1480 merionet  mem       REG                8,3     34872    2497970 /usr/lib/x86_64-linux-gnu/libargon2.so.0
systemd   1480 merionet  mem       REG                8,3    432640    3150484 /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
systemd   1480 merionet  mem       REG                8,3     18680    3150450 /lib/x86_64-linux-gnu/libattr.so.1.1.0
systemd   1480 merionet  mem       REG                8,3     18712    3150465 /lib/x86_64-linux-gnu/libcap-ng.so.0.0.0
systemd   1480 merionet  mem       REG                8,3     27112    3150489 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
systemd   1480 merionet  mem       REG                8,3     14560    3150485 /lib/x86_64-linux-gnu/libdl-2.27.so
...

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

$ sudo lsof -i TCP:80

Процессы, прослушивающие порт:

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd    903   root    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
httpd   1320 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
httpd   1481 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
httpd   1482 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
httpd   1493 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
httpd   1763 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
httpd   2027 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
httpd   2029 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
httpd   2044 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
httpd   3199 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
httpd   3201 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)

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

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

$ man lsof

На этом все! В этой статье мы объяснили, как узнать, кто использует тот или иной файл в Linux.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Fail2ban — это программное обеспечение, которое защищает ваш сервер от атак. ПО отслеживает журналы сервера и выявляет любую под
img
Виртуализация серверов — популярная тема в мире ИТ, особенно на уровне предприятий. Она позволяет разным операционным системам з
img
  Введение Системные вызовы выступают в роли посредников между приложениями и ядром. Они создают уровень абстракции, который защ
img
  Введение SWAP (SWAP-память или SWAP-пространство) – это раздел жесткого диска или SSD компьютера, где операционная система (ОС
img
  Введение Абсолютные и относительные пути определяют расположение файла или каталога в файловой системе. Это набор инструкций д
img
  Введение Файлы конфигурации Linux определяют поведение и функциональное наполнение операционной системы. Файлы конфигурации –
21 ноября
20:00
Бесплатный вебинар
Введение в Docker