Vì lợi ích của độc giả:
Hãy coi chừng rm -rf
trong trường hợp như vậy! Nó có thể tạo ra vấn đề ở một nơi khác trong trường hợp nó xảy ra là chia sẻ mạng! Bạn đa được cảnh bao!
Trong gần như tất cả các trường hợp, nếu một directory
dường như trống rỗng, sử dụng rmdir directory
hoặc có lẽ sudo rmdir directory
. Không sử dụng rm
(hoặc del
dưới Windows). Nếu điều này không hoạt động, bạn cần tìm hiểu, cái gì chặn yêu cầu này, sửa nó và sau đó thử lại rmdir
.
Xin lưu ý rằng tôi không biết OS-X, nhưng tôi nghĩ mọi thứ ở đó rất giống với hành vi của Unix / BSD.
Rất có khả năng thư mục được đề cập chỉ là một điểm gắn kết (từ các bảng mã) hoặc nằm trên một điểm gắn kết trở nên chỉ đọc hoặc bị mắc kẹt trong một số trạng thái không chính xác (khiến thư mục bị xóa). Nếu bây giờ bạn buộc loại bỏ thư mục, những điều rất xấu có thể xảy ra.
Trong trường hợp tốt, thư mục thực sự trống, vì vậy việc loại bỏ nó (phá hủy mount, v.v.) không gây hại gì thêm. Trong trường hợp xấu, nó không trống rỗng, có vẻ như là vậy, điều đó có nghĩa là, bạn đã bỏ đi thứ gì đó mà có lẽ bạn không muốn giết. Tất cả điều này phụ thuộc vào loại gắn kết, trình điều khiển nào đang được sử dụng, vv Trang.
Nếu mọi thứ được thực hiện hợp lý tốt, thông thường không có gì xấu xảy ra. Tuy nhiên đây không phải là trường hợp bình thường. Mọi thứ đã ở trong một trạng thái kỳ lạ, điều đó có nghĩa là: Có gì đó không ổn, vì vậy tốt hơn đừng cố gắng trộn nó thêm nữa! Nếu một cái gì đó bị nứt, bất kỳ liên lạc sai có thể phá vỡ nó.
Ví dụ: nếu bạn đạt điều kiện cuộc đua trên chia sẻ mạng, có thể bạn rm -rf
sẽ xóa dữ liệu vừa được sao chép vào chia sẻ bởi người khác.
Tuy nhiên rmdir
được đảm bảo không bao giờ làm hại, bên cạnh việc loại bỏ các thư mục thực sự trống rỗng. Điều này thậm chí đúng trên NFS, bởi vì NFS chỉ đảm bảo hành vi nguyên tử thực sự trên mkdir
và rmdir
, nhưng không ở đâu khác.
Tài chính
Bạn có thể phát hiện một điểm gắn kết bằng cách sử dụng công cụ mountpoint directory
. Hoặc nhìn vào đầu ra mount
và cố gắng phát hiện ra thú cưỡi của bạn ở đó. Nhưng hãy cẩn thận, ít nhất là trong Linux, điều này có thể nói dối. Sử dụng mountpoint
tiện ích đáng tin cậy hơn nhưng ít thuận tiện hơn.
Trong trường hợp đó bạn đã tìm thấy mountpoint, bạn có thể ngắt kết nối nó và sau đó xóa thư mục, đây là trình tự sau:
umount directory
rmdir directory
Nếu cần sử dụng sudo
, như bình thường.
Ghi chú:
Chia sẻ mạng có thể từ chối rmdir
(và bất cứ điều gì khác) do quyền truy cập.
Hệ thống tập tin bị lỗi có thể từ chối rmdir
, tùy thuộc vào chiến lược thất bại. Có lẽ bạn sẽ thấy một thông điệp hợp lý trong trường hợp đó, có lẽ là không.
Trong Linux (và có lẽ là bất kỳ HĐH hiện đại nào), bạn cũng có thể hạn chế quyền truy cập bằng các phương tiện khác nhau (như gắn một thứ gì đó chỉ đọc, các khả năng như trong SeLinux, v.v.). Điều này có nghĩa là bạn không thấy rằng đó là một điểm gắn kết và bạn không thấy có gì sai, nhưng nó không hoạt động. Trong trường hợp đó, bạn cần tìm kiếm một số lý do khác và nó có thể bị chôn vùi rất sâu trong HĐH. Nó phụ thuộc vào công cụ nếu bạn thấy một số thông báo lỗi hợp lý. Cũng có thể xem xét nhật ký syslog / kernel như dmesg
trong Linux (xin lỗi, tôi không biết tương đương OS-X).
Lưu ý rằng khóa tập tin bắt buộc cũng có thể là một nguồn. Mặc dù điều này là bình thường trên Windows, nhưng nó thường không phải là trường hợp Unix bình thường và tôi chưa bao giờ nghe thấy nó cho các thư mục. Khóa tập tin bắt buộc được bảo vệ bởi POSIX, nhưng chúng là tùy chọn.
Rất thường xuyên trong các trường hợp như vậy, thư mục trong câu hỏi nằm trên một hệ thống tập tin khác với những gì bạn nghĩ. Bạn có thể tìm ra cái nào, với lệnh df directory
(tôi nghĩ rằng điều này giống với OS-X).
Bạn có thể kiểm tra sâu hơn với các công cụ như stat
hoặc statfs
trên thư mục. Tuy nhiên, đây là một mức độ thấp đối với người bình thường và khá thường xuyên các công cụ như vậy được ẩn giấu khỏi người dùng bình thường.
Thư mục có thể có các tập tin với tên vui nhộn. Giống như một tập tin mà ngay lập tức xóa đầu ra của thiết bị đầu cuối, vì vậy có vẻ như nó không ở đó. Hãy thử một cái gì đó như ls -al | less
hoặc sử dụng một cái gì đó như MidnightCommander mc
.
Có rất nhiều tàu có khả năng khác, bao gồm bọ, haxor, người ngoài hành tinh, hoặc có lẽ những thứ kỳ lạ hơn như các nàng tiên. Nhưng thông thường, sẽ không khôn ngoan khi bắt đầu nhìn vào đó, thay vào đó trước tiên hãy cố gắng tìm ra lỗi ở bên bạn, bởi vì "errare humanum est".
rmdir
nó - nhưng nó thường là nguyên nhân khiến người ta không thể ngắt kết nối một tập).