Tôi đã cố gắng xóa một tệp trong Linux bằng cách sử dụng rm -rf file_name, nhưng gặp lỗi:
rm: file_name not removed. Text file busy
Làm cách nào để biết quy trình nào đang sử dụng tệp này?
Câu trả lời:
Bạn có thể sử dụng fuserlệnh, như:
fuser file_name
Bạn sẽ nhận được danh sách các quy trình sử dụng tệp.
Bạn có thể sử dụng các cờ khác nhau với nó, để nhận được kết quả chi tiết hơn.
Bạn có thể tìm thêm thông tin trong bài viết Wikipedia của bộ điều khiển hoặc trong các mantrang.
fusertriển khai đều giống nhau hoặc hoạt động theo cùng một cách. Ngay cả khi -iđược định nghĩa trong POSIX, việc triển khai cụ thể mà bạn đang sử dụng không nhất thiết phải có các tùy chọn giống như các tùy chọn được mô tả trong bài viết Wikipedia. Ví dụ: tôi đang sử dụng AIX ngay bây giờ và tính năng fusercó sẵn trong hệ thống này cũng không có -itùy chọn.
Câu trả lời của @ jim là đúng - fuserlà những gì bạn muốn.
Ngoài ra (hoặc thay thế), bạn có thể sử dụng lsofđể lấy thêm thông tin bao gồm tên người dùng, trong trường hợp bạn cần quyền (mà không cần phải chạy lệnh bổ sung) để hủy quá trình. (Tất nhiên, nếu việc giết quá trình là điều bạn muốn, fusercó thể làm điều đó với -ktùy chọn của nó . Bạn có thể fusersử dụng các tín hiệu khác với -stùy chọn - hãy kiểm tra trang người đàn ông để biết chi tiết.)
Ví dụ, với tail -F /etc/passwdviệc chạy trong một cửa sổ:
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
Lưu ý rằng bạn cũng có thể sử dụng lsofđể tìm hiểu những quy trình đang sử dụng các ổ cắm cụ thể. Một công cụ tuyệt vời để có trong kho vũ khí của bạn.
lsof | head -1để xem tất cả các tiêu đề.
lsof | grep -E "PID|<your_process_name>"hiển thị cả dòng đầu tiên và quá trình bạn muốn truy vấn.
treeđọc gì từ stdin không? Nếu có, nó sẽ làm gì với đầu vào đó?
tree, không phải lsof. Theo như tôi hiểu, treekhông đọc từ đầu vào tiêu chuẩn, do đó sản lượng lsofđược loại bỏ khi bạn chạy lsof | tree .... Nếu điều đó đúng, thì lsof | tree MyFoldcũng giống như tree MyFold, chỉ hiển thị nội dung nhưng không hiển thị tệp nào được mở bởi một số quy trình.