В интересах читателей:
Остерегайтесь rm -rf
в таком случае! Это может создать проблемы где-то еще в случае, если это будет сетевой ресурс! Вы были предупреждены!
Почти во всех случаях, если directory
кажется, что пусто, используйте rmdir directory
или возможно sudo rmdir directory
. Не используйте rm
(или del
под Windows). Если это не работает, вам необходимо выяснить, что блокирует этот запрос, исправить это, а затем повторить попытку rmdir
.
Обратите внимание, что я не знаю OS-X, но я думаю, что вещи там очень похожи на поведение Unix / BSD.
Весьма вероятно, что рассматриваемый каталог был просто точкой монтирования (из encfs) или находился в точке монтирования, которая стала доступна только для чтения или застряла в каком-то неправильном состоянии (что препятствовало удалению каталога). Если вы сейчас принудительно удалите каталог, могут произойти очень плохие вещи.
В хорошем случае каталог действительно был пустым, поэтому удаление его (уничтожение монтирования и т. Д.) Больше не повредило. В плохом случае это было не пусто, просто казалось, что означает, что вы уничтожили что-то, что, возможно, не хотели убивать. Все зависит от типа монтирования, используемых драйверов и т. П.
Если все реализовано достаточно хорошо, обычно ничего плохого не должно произойти. Однако это не нормальный случай. Все уже в странном состоянии, что означает: что-то не так, так что лучше не пытайтесь смешивать это еще дальше! Если что-то сломано, любое неправильное прикосновение может сломать это.
Например, если вы столкнулись с состоянием гонки на общем сетевом ресурсе, может случиться так, что вы rm -rf
удалите данные, которые кто-то еще только что скопировал на этот общий ресурс.
Однако rmdir
гарантированно никогда не навреди, кроме удаления действительно пустых каталогов. Это даже верно для NFS, потому что NFS гарантирует действительно атомарное поведение на mkdir
и rmdir
, но нигде больше.
FYI:
Вы можете определить точку монтирования, используя инструмент mountpoint directory
. В качестве альтернативы посмотрите на вывод mount
и попробуйте найти ваши горы там. Но будьте осторожны, по крайней мере, под Linux это может лежать. Использование mountpoint
утилиты более надежно, но менее удобно.
В этом случае вы нашли точку монтирования, вы можете размонтировать ее, а затем удалить каталог, это следующая последовательность действий:
umount directory
rmdir directory
При необходимости используйте sudo
, как обычно.
Заметки:
Сетевые ресурсы могут отказать rmdir
(и все остальное) из-за прав доступа.
Дефектные файловые системы могут отрицать rmdir
, в зависимости от стратегии сбоя. Возможно, вы увидите разумное сообщение в этом случае, а может и нет.
В Linux (и, возможно, в любой современной ОС) вы также можете ограничить доступ, используя различные средства (например, монтирование чего-либо только для чтения, возможности как в SeLinux и т. Д.). Это означает, что вы не видите, что это точка монтирования, и не видите ничего плохого, но это просто не работает. В этом случае вам нужно искать другую причину, и она может быть очень глубоко похоронена в ОС. Это зависит от инструмента, если вы видите какое-то разумное сообщение об ошибке. Также, возможно, загляните в syslog / kernel-log как dmesg
в Linux (извините, я не знаю эквивалента OS-X).
Обратите внимание, что обязательная блокировка файлов также может быть источником. Хотя это нормально для Windows, обычно это не обычный случай Unix, и я никогда не слышал об этом для каталогов. Обязательные блокировки файлов включены в POSIX, но они не являются обязательными.
Довольно часто в таких случаях рассматриваемый каталог находится в другой файловой системе, чем вы думали. Вы можете узнать, с какой командой df directory
(я думаю, что это то же самое в OS-X).
Вы можете проверить глубже с помощью инструментов, таких как stat
или statfs
в каталоге. Однако это нормальный уровень для обычных людей, и довольно часто такие инструменты хорошо скрыты от обычных пользователей.
В каталогах могут быть файлы со смешными именами. Как файл, который мгновенно стирает вывод терминала, так что, похоже, его там нет. Попробуйте что-то вроде ls -al | less
или используйте что-то вроде MidnightCommander mc
.
Есть множество других возможностей, включая жуков, хакшоров, инопланетян или, возможно, более экзотические вещи, такие как феи. Но обычно не стоит начинать искать там, вместо этого сначала попытайтесь найти ошибку на вашей стороне, потому что «errare humanum est».
rmdir
этому - но это часто является причиной, по которой нельзя размонтировать том).