lsof

lsof (List Open Files) — это утилита для Unix/Linux, которая показывает все открытые файлы и сетевые соединения. В Linux «файл» — это не только обычные файлы, но и каталоги, устройства, сокеты, каналы.
Основное назначение: понять, какой процесс держит файл, порт или ресурс занятым.

Синтаксис:
lsof [опции] [файл | путь | порт | PID]
*Без аргументов lsof показывает список всех открытых файлов в системе.

Основные опции:

ОпцииОписание
-p <PID>Файлы, открытые процессом с указанным PID
-u <user>Файлы, открытые процессами пользователя
-c <name>Процессы с указанным именем
-iСетевые соединения (TCP/UDP)
-i :<port>Кто использует указанный порт
+D <dir>Все файлы, открытые в каталоге (рекурсивно)
+d <dir>Все файлы, открытые в каталоге (не рекурсивно)
-tВыводит только PID (удобно в скриптах)
-nPНе делать DNS-резолвинг и не заменять номера портов на имена сервисов (ускоряет работу)

Примеры:

#Кто слушает порт 80
lsof -i :80

#Все сетевые соединения
lsof -i

#Все открытые файлы процесса с PID 1234
lsof -p 1234

#Все процессы пользователя nginx
lsof -u nginx

#Кто "держит" конкретный файл
lsof /var/log/syslog

#Найти процессы, которые "держат" удалённые (но не освобождённые) файлы
lsof | grep deleted

#Получить только PID процесса, занявшего порт 5432
lsof -t -i :5432

Прокрутить вверх