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

by itisgood

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

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

Мы можем использовать команду lsof, чтобы узнать, использует ли кто-то файл, и если да, то кто.

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

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

Lsof используется в файловой системе для определения того, кто использует какие-либо файлы в этой файловой системе.

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

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

Еще одно важное использование 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.

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

$ man lsof

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

Мы показали, как идентифицировать владельца и обрабатывать информацию для процессов, используя открытый файл.

Используйте форму обратной связи ниже, чтобы связаться с нами по любым вопросам или комментариям.

 

You may also like

Leave a Comment