Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
ERR_DEV_RESOURCE_BUSY Linux / DevOps

Ошибка Device or resource busy в Linux: как найти блокирующий процесс через lsof

Обновлено: 27.08.2026  ·  Официальная база знаний

Почему файл не удаляется?

При попытке удалить файл через rm или отмонтировать диск через umount /mnt/storage консоль возвращает ошибку Device or resource busy или Operation not permitted. Это происходит потому, что какой-то запущенный системный процесс держит открытый файловый дескриптор.

Симптомы блокировки

$ rm -rf /var/log/app.log
rm: cannot remove '/var/log/app.log': Device or resource busy

Поиск и освобождение заблокированного ресурса

  1. Ищем процесс, удерживающий конкретный файл, через lsof:
    sudo lsof /var/log/app.log

    Вы увидите имя программы (COMMAND) и её PID.

  2. Ищем все процессы, удерживающие целую точку монтирования/диск:
    sudo fuser -mv /mnt/storage
  3. Завершаем блокирующий процесс:
    # Мягкое завершение по PID:
    sudo kill -15 PID_ПРОЦЕССА
    
    # Принудительное закрытие всех процессов на точке монтирования:
    sudo fuser -kvm /mnt/storage
  4. Повторяем удаление или размонтирование:
    sudo rm -f /var/log/app.log
    sudo umount /mnt/storage

Если диск все равно не отмонтируется, используйте отложенное отключение: sudo umount -l /mnt/storage (Lazy unmount).

Практический опыт инженера: Ситуация 'файл удален, но диск полон' часто происходит с логами Nginx. Всегда освобождайте дескриптор командой systemctl reload nginx после ручного rm.

Частые вопросы (FAQ)

Что делать, если lsof не выдает результатов?

Убедитесь, что запускаете команду с sudo, иначе lsof не видит процессы других пользователей.

Почему удаленный файл продолжает занимать место на диске?

Процесс все еще держит его открытым (статус deleted в lsof). Перезапустите службу, создавшую файл.

Что означает флаг -k в утилите fuser?

Флаг -k (kill) автоматически отправляет сигнал завершения всем процессам, использующим ресурс.

Что делать, если файл защищен атрибутом неизменяемости (immutable)?

Проверьте атрибуты: lsattr файл. Снимите блокировку: sudo chattr -i файл.