Linux процессы которые используют файл
Еще одно важный случай применения команды lsof — определение процесса, использующего определенный порт. Например, чтобы определить, какой процесс использует порт 80, можно воспользоваться следующим вариантом запуска команды lsof.
Определение процесса, прослушивающего порт
$ 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:
На этом все! В этой статье мы объяснили, как узнать, кто использует тот или иной файл в Linux. Мы показали, как определить владельца и информацию о процессах, использующих открытый файл.
Aaron Kili — энтузиаст Linux и свободного ПО, системный администратор, веб-разработчик и в настоящее время создатель контента для TecMint, который любит работать с компьютерами и твердо верит в обмен знаниями.
Вы можете найти на нашем сайте более подробные статьи о команде lsof:
Нужно знать: утилита lsof в Linux
В этой статье мы объясним, как узнать, кто использует тот или иной файл в Linux. Это поможет вам узнать системного пользователя или процесс, который использует открытый файл.
Как узнать, кто использует файл в Linux?
Мы можем использовать команду lsof (которая является аббревиатурой от List Of Opened Files), чтобы узнать, использует ли кто-то файл, и если да, то кто. Он читает память ядра в поиске открытых файлов и перечисляет все открытые файлы. В этом случае открытый файл может быть обычным файлом, каталогом, специальным файлом блока, специальным файлом символов, потоком, сетевым файлом и многими другими, поскольку в Linux все является файлом.
Lsof используется в файловой системе, чтобы определить, кто использует какие-либо файлы в этой файловой системе. Вы можете запустить команду lsof в файловой системе Linux, и выходные данные идентифицируют владельца и информацию о процессах для процессов, использующих файл, как показано в следующих выходных данных.
Список всех открытых файлов в 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 вашим именем пользователя.
Список файлов, открытых пользователем:
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, с помощью следующей команды.
Процессы, прослушивающие порт:
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:
На этом все! В этой статье мы объяснили, как узнать, кто использует тот или иной файл в Linux.
😡 Как узнать, кто использует файл в Linux
В этой статье мы объясним, как узнать, кто использует тот или иной файл в 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:
Это все! В этой статье мы объяснили, как узнать, кто использует тот или иной файл в Linux.
Мы показали, как идентифицировать владельца и обрабатывать информацию для процессов, используя открытый файл.
Используйте форму обратной связи ниже, чтобы связаться с нами по любым вопросам или комментариям.