Я попытался rm -rf
открыть папку и получил «устройство или ресурс занят».
В Windows я бы использовал LockHunter, чтобы решить эту проблему. Что такое эквивалент Linux? (Пожалуйста, дайте в качестве ответа простой метод «разблокировать этот», а не полные статьи, подобные этой . Хотя они полезны, в настоящее время меня интересует только ASimpleMethodThatWorks ™)
rm -rf /
... она с радостью удалит каждый файл, включая / bin / rm.Ответы:
Инструмент, который вы хотите
lsof
, это означает, что список открытых файлов .У него много опций, поэтому проверьте страницу руководства, но если вы хотите увидеть все открытые файлы в каталоге:
Это будет проходить через файловую систему
/path
, так что будьте осторожны, делая это на больших деревьях каталогов.Как только вы узнаете, в каких процессах открыты файлы, вы можете выйти из этих приложений или убить их с помощью
kill(1)
команды.источник
/path
. Это одна из причин скрытых «открытых файлов».lsof
кажется, ничего не делает для меня:lsof storage/logs/laravel.log
ничего не вернул, и так сделалlsof +D storage/logs/
.umount
ответил сnot mounted
.mount | grep <path>
. Это показывает, что любой/dev/<abc>
может быть установлен на<path>
. Используйте,sudo umount -lf /dev/<abc>
а затем попробуйте удалить<path>
. Работает для меня. Спасибо @camhиногда это является результатом проблем с монтированием, поэтому я размонтирую файловую систему или каталог, который вы пытаетесь удалить:
источник
Я использую
fuser
для такого рода вещи. Он покажет, какой процесс использует файл или файлы в монтировании.источник
fuser
помогает только в конкретном случае, когда вы хотите размонтировать файловую систему. Здесь проблема состоит в том, чтобы найти то, что использует определенный файл.fuser
здесь не помогает, потому что проблема в том, чтобы найти все открытые файлы в дереве каталогов. Вы можете сказать,lsof
чтобы показать все файлы и фильтр, или сделать его рекурсивным;fuser
не имеет такого режима и должен вызываться для каждого файла.fuser
работает будет списки. Попробуйтеfuser /var/log/*
, если какие-либо журналы открыты, он скажет, какие и у кого есть открытые. Если простой шаблон, не будет работать,find
с или безxargs
будет делать эту работу.lsof
не было в моем пути, покаfuser
был, позволяя мне найти идентификатор процесса, который нарушает работу, чтобы убить, так что + 1 + спасибо.Вот решение:
ls -a
.xyz
файлvi .xyz
и посмотреть, что содержимое файлаps -ef | grep username
kill -9 job_ids
- где job_ids - значение 2-го столбца соответствующей ошибки, вызванной содержимым в 8-м столбцеисточник
У меня была такая же проблема, построил однострочник, начиная с рекомендации @camh:
Команда
awk
захватывает PIDS. Командаtail
избавляется от надоедливой первой записи: «PID». Я использовал-9
на kill, другие могли бы иметь более безопасные варианты.источник
У меня была эта проблема, когда автоматизированный тест создал виртуальный диск. Команды предложили в других ответах,
lsof
иfuser
, не помогал. После тестов я попытался размонтировать его, а затем удалить папку. Я был действительно смущен целую вечность, потому что я не мог избавиться от этого - я продолжал получать "Устройство или ресурс занят" !Случайно я узнал, как избавиться от виртуального диска. Мне пришлось размонтировать его столько раз, сколько я выполнил
mount
команду, т.е.sudo umount path
Из-за того, что он был создан с использованием автоматического тестирования, он монтировался много раз, поэтому я не мог избавиться от него, просто размонтировав его один раз после тестов. Итак, после того, как я вручную размонтировал его много раз, он, наконец, снова стал обычной папкой, и я смог удалить его.
Надеюсь, это может помочь кому-то, кто сталкивается с этой проблемой!
источник
Я часто сталкиваюсь с этим на серверах с сетевыми файловыми системами NFS. Я предполагаю, что это как-то связано с файловой системой, поскольку файлы обычно называются как
.nfs000000123089abcxyz
.Мое типичное решение - переименовать или переместить родительский каталог файла, а затем вернуться позже через день или два, и файл будет удален автоматически, и в этот момент я могу свободно удалить каталог.
Обычно это происходит в каталогах, где я устанавливаю или компилирую программные библиотеки.
источник
Отбросив вопрос Прабхата выше, у меня была эта проблема в macos high sierra, когда я застрял в процессе encfs, перезагрузка решила его, но это
Показал мне процесс и PID (столбец два).
починил это.
источник
-15
?Если у вас есть доступ к серверу, попробуйте
Или, сделайте umount и снова смонтируйте , попробуйте
umount -l
: lazy umount, если вы столкнулись с какой-либо проблемой обычного umount.У меня тоже была такая проблема где
lsof +D path
: не дает выводаps -ef
: не дает соответствующей информацииисточник