1

Когда я делаю

rm -rf directory

Это говорит сообщение как:

rm: can't delete directory/.nfs0000000008547f6500007f62
ressource occupied 

и я не знаю почему.

1 ответ1

3

Ваша система, вероятно, использует NFS. Реализация клиента NFS создает эти каталоги, когда файл удаляется, но все еще используется приложением.

С http://nfs.sourceforge.net/#faq_d2:

A. Приложения Unix часто открывают файл с нулями, а затем отсоединяют его. Они делают это так, чтобы файл не был виден в пространстве имен файловой системы другим приложениям, и чтобы система автоматически очищала (удаляла) файл при выходе из приложения. Это называется "удаление при последнем закрытии" и является традицией среди приложений Unix.

Из-за структуры протокола NFS файл не может быть удален из пространства имен, но все еще остается в использовании приложением. Таким образом, клиенты NFS должны эмулировать это, используя то, что уже существует в протоколе. Если открытый файл не связан, клиент NFS переименовывает его в специальное имя, которое выглядит как «.nfsXXXXX». Это "скрывает" файл, пока он остается в использовании. Это известно как "глупое переименование". Обратите внимание, что серверы NFS не имеют ничего общего с этим поведением.

После того, как все приложения на клиенте закрыли глупо переименованный файл, клиент автоматически завершает отмену связи, удаляя файл на сервере. Обычно это эффективно, но если клиент падает до удаления файла, он оставляет файл .nfsXXXXX. Если вы уверены, что приложения, использующие эти файлы, больше не работают, можно безопасно удалить эти файлы вручную.

Протокол NFS версии 4 с сохранением состояния и может фактически поддерживать удаление при последнем закрытии. К сожалению, не существует простого способа сделать это и оставаться обратно-совместимым с аксессорами версии 2 и 3.

Если вы перезапустите приложения или сервер, вы можете удалить эти файлы (потому что они больше не будут использоваться), если в это время не будут созданы новые.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .