it-swarm-vi.com

Làm thế nào để vượt qua "thiết bị hoặc tài nguyên bận rộn"?

Tôi đã cố gắng rm -rf một thư mục và có "thiết bị hoặc tài nguyên bận".

Trong Windows, tôi đã sử dụng LockHunter để giải quyết vấn đề này. Tương đương linux là gì? (Vui lòng đưa ra câu trả lời bằng phương pháp "mở khóa" đơn giản này và không hoàn thành các bài viết như bài này . chỉ trong ASimpleMethodThatWorks ™)

250
ripper234

Công cụ bạn muốn là lsof, viết tắt của liệt kê các tệp đang mở.

Nó có rất nhiều tùy chọn, vì vậy hãy kiểm tra trang man, nhưng nếu bạn muốn xem tất cả các tệp đang mở trong một thư mục:

lsof +D /path

Điều đó sẽ lặp lại thông qua hệ thống tập tin trong /path, Vì vậy hãy cẩn thận khi thực hiện trên các cây thư mục lớn.

Khi bạn biết quy trình nào mở tệp, bạn có thể thoát các ứng dụng đó hoặc tắt chúng bằng lệnh kill(1).

255
camh

đôi khi, đó là kết quả của sự cố gắn kết, vì vậy tôi sẽ ngắt kết nối hệ thống tập tin hoặc thư mục mà bạn đang cố xóa:

ô/con đường

122
kip2

Tôi sử dụng fuser cho loại điều này. Nó sẽ liệt kê quá trình đang sử dụng một tập tin hoặc tập tin trong một mount.

16
BillThor

Đây là giải pháp:

  1. Đi vào thư mục và gõ ls -a
  2. Bạn sẽ tìm thấy tệp .xyz
  3. vi .xyz Và xem nội dung của tệp là gì
  4. ps -ef | grep username
  5. Bạn sẽ thấy nội dung .xyz trong cột thứ 8 (hàng cuối cùng)
  6. kill -9 job_ids - trong đó job_ids là giá trị của cột thứ 2 có nội dung gây ra lỗi tương ứng trong cột thứ 8
  7. Bây giờ hãy thử xóa thư mục hoặc tập tin.
12
user73011

Tôi cũng gặp vấn đề tương tự, đã xây dựng một lớp lót bắt đầu bằng khuyến nghị @camh:

lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs kill -9

Lệnh awk lấy PIDS. Lệnh tail được loại bỏ khỏi mục nhập đầu tiên phiền phức: "PID". Tôi đã sử dụng -9 on kill, những người khác có thể có các lựa chọn an toàn hơn.

9

Tôi gặp điều này thường xuyên trên các máy chủ có hệ thống tệp mạng NFS. Tôi giả sử nó có liên quan đến hệ thống tập tin, vì các tệp thường được đặt tên như .nfs000000123089abcxyz.

Giải pháp điển hình của tôi là đổi tên hoặc di chuyển thư mục mẹ của tệp, sau đó quay lại sau một hoặc hai ngày và tệp sẽ tự động bị xóa, tại thời điểm đó tôi có thể tự do xóa thư mục.

Điều này thường xảy ra trong các thư mục nơi tôi đang cài đặt hoặc biên dịch thư viện phần mềm.

7
user5359531

Tôi gặp vấn đề này khi một bài kiểm tra tự động tạo ra một đĩa RAM. Các lệnh được đề xuất trong các câu trả lời khác, lsoffuser, không giúp ích được gì. Sau khi kiểm tra tôi đã cố gắng ngắt kết nối nó và sau đó xóa thư mục. Tôi đã thực sự bối rối từ lâu vì tôi không thể thoát khỏi nó - Tôi cứ bị "Thiết bị hoặc tài nguyên bận"!

Tình cờ tôi tìm ra cách thoát khỏi ramdisk. Tôi đã phải ngắt kết nối nó với cùng số lần tôi đã chạy lệnh mount, tức là Sudo umount path

Do thực tế là nó được tạo ra bằng thử nghiệm tự động, nó đã được gắn kết nhiều lần, do đó tại sao tôi không thể thoát khỏi nó bằng cách đơn giản là ngắt kết nối nó một lần sau các thử nghiệm. Vì vậy, sau khi tôi tự ngắt kết nối nó nhiều lần, cuối cùng nó lại trở thành một thư mục thông thường và tôi có thể xóa nó.

Hy vọng rằng điều này có thể giúp đỡ người khác gặp phải vấn đề này!

5
gloriphobia

Bỏ qua câu hỏi của Bohhat ở trên, tôi gặp vấn đề này ở macos High Sierra khi tôi mắc kẹt một quy trình mã hóa, khởi động lại đã giải quyết nó, nhưng điều này

ps -ef | grep name-of-busy-dir

Chỉ cho tôi quá trình và PID (cột hai).

Sudo kill -15 pid-here

đã sửa nó.

5
bil

Nếu bạn có máy chủ truy cập, hãy thử

Xóa thư mục đó khỏi máy chủ

Hoặc, làm mountmount lần nữa, thử umount -l: lười biếng umount nếu gặp bất kỳ vấn đề trên umount bình thường.

Tôi cũng có vấn đề này

lsof +D path: không cho đầu ra

ps -ef: không cung cấp thông tin liên quan

3
Prabhat Kumar Singh