- Главная
- Блог
- Без категории
- lsof: Как найти открытые файлы и сетевые соединения в Linux
lsof: Как найти открытые файлы и сетевые соединения в Linux
Команды:
lsof (list of open files - список открытых файлов)
lsof +D /home/it-skills/
lsof -i (internet - интернет-соединения)
lsof -i (internet - интернет-соединения) -n (numeric - числовой формат) -P (Port - порт)
sudo lsof -i -n -P | grep -v usr1cv8
Далее, утилита lsof расшифровывается как LiSt of Open Files или список открытых файлов. Это один из ключевых инструментов администратора для анализа того, какие процессы используют какие файлы, в том числе обычные файлы, сокеты, устройства и сетевые порты.
lsof (list of open files - список открытых файлов)
lsof
как вы видите, их здесь огромное количество, поэтому, для эффективного анализа, необходимо данный вывод фильтровать.
Допустим, я хочу узнать, кто сейчас работает с файлом mtr_report.txt
Terminal ubuntu-srv:
less /home/it-skills/mtr_report.txt
SSH ubuntu-srv:
lsof | grep mtr
less 5867 it-skills 4r REG 253,0 3452 396315 /home/it-skills/mtr_report.txt
либо перейти в директорию с файлом и запросить, кто его использует
cd /home/it-skills
lsof mtr_report.txt
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
less 5867 it-skills 4r REG 253,0 3452 396315 mtr_report.txt
Это полезно, если вы не можете изменить или удалить файл, так как он занят другим пользователем. Так мы узнаем кем именно и можем предпринять дальнейшие действия.
lsof +D /home/it-skills/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
pipewire 1080 it-skills cwd DIR 253,0 4096 394794 /home/it-skills
pipewire- 1081 it-skills cwd DIR 253,0 4096 394794 /home/it-skills
dbus-daem 1185 it-skills cwd DIR 253,0 4096 394794 /home/it-skills
bash 1186 it-skills cwd DIR 253,0 4096 394794 /home/it-skills
bash 4709 it-skills cwd DIR 253,0 4096 394794 /home/it-skills
bash 5846 it-skills cwd DIR 253,0 4096 394794 /home/it-skills
less 5867 it-skills cwd DIR 253,0 4096 394794 /home/it-skills
less 5867 it-skills 4r REG 253,0 3452 396315 /home/it-skills/mtr_report.txt
lsof 6258 it-skills cwd DIR 253,0 4096 394794 /home/it-skills
lsof 6259 it-skills cwd DIR 253,0 4096 394794 /home/it-skills
Так мы можем увидеть информацию обо всех файлах, относительно директории /home/it-skills/ и её подкаталогов, которые открыты и используются.
Допустим, это может быть актуально для файлового ресурса, чтобы посмотреть какие пользователи какие файлы используют в данный момент.
Так же, мы можем посмотреть через данную утилиту информацию о сетевых подключениях
lsof -i (internet - интернет-соединения)
lsof -i
sudo !!
Данный вывод содержит дополнительную информацию, которая может быть нам полезна, это имя пользователя, под которым было инициализировано сетевое соединение.
Помните, в прошлом видео мы определились, что у нас много соединений использует порт 1541? Так вот, из этого вывода, мы можем понять, что эти соединения инициализировал пользователь usr1cv8, что говорит нам о том, что они связанны с работой сервера 1С.
Все процессы, запущенные от имени данного пользователя связаны с работой сервера 1С.
В данном выводе у нас есть текстовые имена и название служб, вместо номера портов
nmbd 919 root 15u IPv4 33858 0t0 UDP ubuntu-srv:netbios-ns
поэтому добавим ключи:
lsof -i -n (numeric) -P (Port)
sudo lsof -i -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 764 systemd-resolve 13u IPv4 31703 0t0 UDP 127.0.0.53:53
ragent 841 usr1cv8 7u IPv4 69845 0t0 TCP 127.0.0.1:35266->127.0.1.1:1541 (ESTABLISHED)
postgres 868 postgres 7u IPv4 33514 0t0 TCP *:5432 (LISTEN)
nmbd 905 root 13u IPv4 33973 0t0 UDP *:137
sshd 949 root 3u IPv4 33496 0t0 TCP *:2222 (LISTEN)
apache2 1004 root 4u IPv6 33820 0t0 TCP *:80 (LISTEN)
rmngr 1310 usr1cv8 11u IPv6 35027 0t0 TCP *:1541 (LISTEN)
rphost 1416 usr1cv8 5u IPv4 70023 0t0 TCP 127.0.0.1:36270->127.0.1.1:1541 (ESTABLISHED)
dbda 1465 usr1cv8 8u IPv4 35195 0t0 TCP *:1562 (LISTEN)
apache2 3848 www-data 4u IPv6 33820 0t0 TCP *:80 (LISTEN)
sshd 4606 root 4u IPv4 49563 0t0 TCP 192.168.0.14:2222->192.168.1.253:52277 (ESTABLISHED)
sshd 4707 it-skills 4u IPv4 49563 0t0 TCP 192.168.0.14:2222->192.168.1.253:52277 (ESTABLISHED)
Давайте оставим только те соединения, которые работают от пользователя usr1cv8
sudo lsof -i -n -P | grep usr1cv8
И исключим упоминание порта 1541
sudo lsof -i -n -P | grep usr1cv8 | grep -v 1541
Таким образом, мы видим, какие порты использует 1С, помимо порта 1541
Давайте исключим из вывода соединения запущенные от пользователя usr1cv8, чтобы посмотреть, кто еще работает с сетью, помимо 1С
sudo lsof -i -n -P | grep -v usr1cv8
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 764 systemd-resolve 13u IPv4 31703 0t0 UDP 127.0.0.53:53
systemd-r 764 systemd-resolve 14u IPv4 31704 0t0 TCP 127.0.0.53:53 (LISTEN)
postgres 868 postgres 7u IPv4 33514 0t0 TCP *:5432 (LISTEN)
postgres 868 postgres 8u IPv6 33524 0t0 TCP *:5432 (LISTEN)
nmbd 905 root 13u IPv4 33973 0t0 UDP *:137
nmbd 905 root 14u IPv4 33974 0t0 UDP *:138
nmbd 905 root 15u IPv4 33985 0t0 UDP 192.168.0.14:137
nmbd 905 root 16u IPv4 33986 0t0 UDP 192.168.0.255:137
nmbd 905 root 17u IPv4 33987 0t0 UDP 192.168.0.14:138
nmbd 905 root 18u IPv4 33988 0t0 UDP 192.168.0.255:138
sshd 949 root 3u IPv4 33496 0t0 TCP *:2222 (LISTEN)
sshd 949 root 4u IPv6 33507 0t0 TCP *:2222 (LISTEN)
sshd 979 root 4u IPv4 33710 0t0 TCP 192.168.0.14:2222->192.168.1.253:58164 (ESTABLISHED)
apache2 1004 root 4u IPv6 33820 0t0 TCP *:80 (LISTEN)
smbd 1068 root 44u IPv6 34170 0t0 TCP *:445 (LISTEN)
smbd 1068 root 45u IPv6 34171 0t0 TCP *:139 (LISTEN)
smbd 1068 root 46u IPv4 34172 0t0 TCP *:445 (LISTEN)
smbd 1068 root 47u IPv4 34173 0t0 TCP *:139 (LISTEN)
sshd 1184 it-skills 4u IPv4 33710 0t0 TCP 192.168.0.14:2222->192.168.1.253:58164 (ESTABLISHED)
apache2 3848 www-data 4u IPv6 33820 0t0 TCP *:80 (LISTEN)
apache2 3849 www-data 4u IPv6 33820 0t0 TCP *:80 (LISTEN)
sshd 4606 root 4u IPv4 49563 0t0 TCP 192.168.0.14:2222->192.168.1.253:52277 (ESTABLISHED)
sshd 4707 it-skills 4u IPv4 49563 0t0 TCP 192.168.0.14:2222->192.168.1.253:52277 (ESTABLISHED)
В общем, используя различные фильтры, мы можем более детально анализировать вывод.