5

Когда я пытаюсь удалить файл

sudo rm -rf filename

Мне плевать обратно

rm: filename: Resource is busy

Как я могу переопределить это? Я точно знаю , что ресурс не занят. Я просто хочу удалить это!

8 ответов8

9

Вы не можете переопределить это поведение.

Операционная система заявляет, что она занята. Операционная система, вероятно, правильно. Сообщение об ошибке может быть по следующим причинам:

  • файл фактически используется другим процессом
  • есть проблема с вашей файловой системой

Поскольку вы хотите удалить файл, я предлагаю загрузить компьютер из образа linux, смонтировать файловую систему и удалить файл.

5

Попробуйте lsof filename чтобы увидеть, действительно ли он занят. Одной из наиболее распространенных причин этого является то, что вы пытаетесь удалить каталог, в котором у вас открыта оболочка.

1

Это старый вопрос, но я добавлю свои 2 цента, потому что в действительности существуют ситуации, когда файл на самом деле не используется, но ОС все еще думает, что это так.

Возможно, что файл на съемном устройстве будет использоваться во время сбоя системы, и система продолжит думать, что файл все еще используется, даже если lsof ничего не возвращает и файл на самом деле не используется. УдалениеDS_store не имеет никакого эффекта.

Временно можно переименовать файл или папку, если это необходимо. Затем извлеките утилиту для работы с диском и выполните восстановление диска / разрешения на восстановление для тома.

1

Самое простое, что вы можете сделать, это

lsof +D /path/in/question

Вы получите список процессов, которые удерживают этот процесс

Убить процессы, которые перечислены

kill -9 <numberOfProcessID>

Очевидно, без <

1

Как говорят другие авторы, если вы знаете лучше, чем ОС, перезагрузите систему, и это заставит ее забыть. Но на самом деле они знают, о чем говорят ...

1

Все вышеперечисленное. Система обычно не лжет, а значит, иногда так и есть.

Читайте дальше, потому что у меня была уникальная ситуация, в которой ни одно из предложенных ранее решений не работало, но мне удалось решить мою проблему.

В моем случае "занятый" файл представлял собой файл шрифта .ttf TrueType на "чужом диске" на подключенном к сети диске, и поэтому он вряд ли будет открыт системой при запуске. Команда lsof ничего не показала. Перезагрузка мака ничего не изменила. Выключение единственного другого компьютера в сети, который мог использовать файл, ничего не изменило.

Дисковая утилита не могла ничего сделать с дисководом, потому что это было не просто съемное устройство, это было удаленное устройство, не подключенное напрямую к Mac.

Я скопировал файл с новым именем, потому что в моем случае я хотел переименовать его, а не удалять. После копирования я не смог удалить оригинал, потому что он все еще был «занят».

Я вошел в подключенный к сети диск и попытался "проверить" "чужой диск", но проверка не удалась. Но теперь я смог удалить исходный файл - в Finder, без использования sudo или rm -f или чего-то подобного. Он больше не был "занят".

0

Запустите утилиту диска и проверьте, есть ли смонтированный образ, соответствующий этому имени каталога. Извлеките изображение и каталог исчезнет.

0

У меня была похожая проблема, когда файл main.css блокировался при переходе с одной ветки на другую в Git. Репо было на файловом сервере, и я был связан с SMB. Мой клиент - Mac с OSX 10.10.5 (Yosemite).

Перезагрузка клиента не помогла. Я не мог переключать ветви. Я не мог спрятать тайник. Я не мог просто просмотреть файл. Я застрял.

Тогда я понял, что могу получить доступ к серверу напрямую. Там я смог запустить файл, а затем оформить новую версию. Вернувшись к моему клиенту, все было в порядке.

Просто на тот случай, если он пригодится кому-то еще, кто найдет эту тему тем же способом, что и я.

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