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 fuser
lệ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 man
trang.
fuser
triể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 fuser
có sẵn trong hệ thống này cũng không có -i
tùy chọn.
Câu trả lời của @ jim là đúng - fuser
là 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, fuser
có thể làm điều đó với -k
tùy chọn của nó . Bạn có thể fuser
sử dụng các tín hiệu khác với -s
tù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/passwd
việ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, tree
khô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 MyFold
cũ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.