img

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

В этой статье мы объясним, как узнать, кто использует тот или иной файл в 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
Виртуализация серверов – это разделение одного физического сервера на несколько виртуальных серверов, каждый из которых работает
img
На базе нашего опыта и статей мы сделалем еще один полезный документ: руководство администратора по Linux/Unix системам. В докум
img
Удаленный доступ к системам давно стал необходимостью, и сейчас с трудом можно представить, что было бы, если бы мы не могли упр
img
Все мы любим компьютеры. Они могут делать столько удивительных вещей. За пару десятилетий компьютеры произвели самую настоящую р
img
Архитектуры х64 и х86 являются одними из наиболее широко используемых типов архитектур системы команд (АСК или ISA – Instr
img
Gzip – один из самых популярных алгоритмов сжатия, который позволяет сократить размер файла, но при этом сохранить исходный файл
Комментарии
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59