Ситуация: пытаетесь запустить сервер, а он падает с "Address already in use". Порт занят, но кем? Или пытаетесь удалить файл, а система пишет "file is in use". Кто его держит? lsof (List Open Files) отвечает на оба вопроса. В Linux «всё есть файл» - сетевые сокеты, пайпы, устройства, обычные файлы. lsof показывает, какие процессы какие «файлы» открыли. Вариант 1 (Кто занял порт): классический кейс с запуском сервера. # Кто слушает 3000 порт? lsof -i :3000 # Вывод: COMMAND PID USER FD NAME # node 1234 user 23u IPv4 TCP *:3000 (LISTEN) Вариант 2 (Какой процесс держит файл): не даёт удалить папку или файл. # Кто использует файл лога? lsof /var/log/app.log # Кто работает в папке /home/user/project? lsof +D /home/user/project Вариант 3 (Все открытые файлы процесса): подозреваете конкретный процесс - смотрите, что он делает. # Все файлы, открытые процессом с PID 1234 lsof -p 1234 # Сеть, которую использует процесс lsof -p 1234 -i Вариант 4 (Кто использует удалённый файл): монтир
lsof - кто держит порт и открыл тот файл
20 апреля20 апр
1 мин