👩‍💻 **Как использовать lsof для поиска процессов, блокирующих файлы** `lsof` — позволяет просматривать информацию об открытых файлах и связанных с ними процессах. Особенно полезно, если вы сталкиваетесь с ошибками доступа к файлам, например, при монтировании, удалении или использовании разделов. ⚙️ **Примеры использования** 🟢 К примеру, если мы не можем удалить файл или получить к нему доступ, выполним: `lsof /путь/к/файлу В результате получим список процессов, которые используют файл, с подробной информацией: PID, пользователь, команда и доступ. 🟢 Чтобы просмотреть все файлы, которые были открыты в определенном каталоге, используйте следующую команду: `lsof +D /директория ➕ **Дополнительно:** ➡️ `lsof -u username` — покажет файлы, открытые процессами указанного пользователя. ➡️ `lsof -p PID` — отображает все файлы, которые использует процесс с заданным PID. ➡️ `lsof -i :PORT` — покажет процессы, использующие определённый сетевой порт. =================================== ⚙️ **Проверка использования порта в Linux** Иногда нужно узнать, какой процесс использует определённый порт. В Linux это можно сделать несколькими способами. **📌 Просмотр процессов, занявших порт** **🟢 Определение процесса по порту:** `sudo lsof -i :80` Покажет процесс, использующий порт 80. **🟢 Вывести PID процесса:** `sudo netstat -tulnp | grep :80` Альтернативный способ проверки. **🟢 Завершение процесса по PID:** `sudo kill -9 ` Останавливает процесс, если он мешает запуску сервиса. **Полезно при отладке серверов, проверки конфликтов между сервисами и устранения проблем с сетью.** ======================= **Как исправить "rm: cannot remove ‘file’: Device or Resource Busy"? Бывало же у вас такое - заканчиваешь работать с каким-то ресурсом (файлом/каталогом/устройством), хочешь его удалить и видишь ошибку о том, что он чем-то занят (используется системой либо каким-то процессом). `rm: cannot remove 'file-or-directory': Device or resource busy Тут нужно понять, в чем конкретная причина и чем он задействован: то ли процессом, то ли это, быть может, точка монтирования для какой-то FS…  Распространенных решения вижу 2:  1. Использование команд "**lsof + fuser**" для определения занятых ресурсов и завершения процессов. Если вы не знаете, какая программа мешает выполнить операцию, используйте **lsof**: `$ lsof +D Sources/App/ COMMAND   PID    USER   FD   NAME server  22331 xoadmin  txt    Sources/App/server client  22332 xoadmin  txt    Sources/App/client Если у нас ресурс занимают 2 процесса, можно и через **kill** все грохнуть. Если их много, можно более автоматизированно - через **fuser**. Эта команда завершит все процессы, которые что-то используют в целевом каталоге: `$ fuser -k Sources/App/ После выполнение мы вырубим сразу оба процесса **22331** и **22332**. 2. Определение точки монтирования. Это полезно, когда какая-нибудь флешка или внешний диск монтирован в целевой каталог. Узнать, так ли это, можно через команду **mount**. Допустим, у меня не получается удалить **test**: `$ rm -rf test `rm: cannot remove 'test/tmpfsdir': Device or resource busy Проверяем, является ли **tmpfsdir** точкой монтирования: `$ mount | grep test/tmpfsdir `none on /home/u/test/tmpfsdir type tmpfs (rw,relatime,inode64) Вывод говорит о том, что в каталог **tmpfsdir** примонтирована FS **tmpfs**. Для успешного выполнения операции нужно размонтировать каталог: `$ sudo umount test/tmpfsdir `$ rm -rf test