Xem quá trình nào đang sử dụng tệp trong Mac OS X


93

Tôi muốn có thể theo dõi một tệp và xem quá trình nào đang chạm vào tệp đó. Điều đó có thể không? Tôi biết rằng tôi có thể xem danh sách các quy trình đang mở trong trình theo dõi hoạt động nhưng tôi nghĩ rằng nó đang diễn ra nhanh chóng để tôi nhìn thấy nó. Lý do cho điều này là tôi đang sử dụng một khuôn khổ và tôi nghĩ rằng phiên bản hệ thống của khung đang được sử dụng thay vì phiên bản gỡ lỗi và tôi muốn xem quy trình nào đang chạm vào nó.


1
đây là một câu hỏi sử dụng hỏi tốt hơn trên Super User
Michael Dautermann


LƯU Ý: ^^^ LÀ MỘT CÂU HỎI RẤT LIÊN QUAN, câu hỏi tương tự - FYI ;-)
Brad Parks

Câu trả lời:


90

lsof sẽ liệt kê các tệp đang mở, nhưng có thể hơi khó xử nếu chạm vào giây lát (ví dụ: nếu tệp không mở khi lsof chạy, nó sẽ không hiển thị).

Tôi nghĩ đặt cược tốt nhất của bạn sẽ là fseventer.app của fernLightning . Đó là "nagware" và cho phép bạn xem (đồ họa) API của fsevents trong thời gian thực.


39
lsof | grep myfilenameđã làm cho tôi. Tôi có một tệp PDF trong Thùng rác mà hệ thống cho rằng đang được sử dụng. Kỳ lạ là lsoftuyên bố rằng nó đang được sử dụng bởi Previewnhưng Previewdường như không chạy (ví dụ: khi tôi nhấn tab qua các ứng dụng đang chạy) nhưng Activity Monitorlại cho thấy nó đang chạy. Xem trước ngu ngốc.
Dave Sag

Điều này hoàn hảo cho các tệp tạm thời (tức là các tệp không được mở mà chỉ được chạm vào khi lưu).
Jeronimo Colon III

Tôi đã gặp sự cố tương tự hôm nay với một tệp trong Thùng rác của tôi bị giữ bởi quá trình Xem trước zombie. Mở Xem trước và thoát lại nó đã giải quyết được vấn đề cho tôi. Tôi nghĩ Xem trước thường xuyên giữ các tệp mặc dù nó đã thoát. Tôi thường mở hình ảnh ở dạng Evernote trong Xem trước để cắt chúng và hầu hết - thường xuyên hơn không - ngay cả sau khi tôi đã thoát khỏi Xem trước, Evernote chiến tranh rằng hình ảnh vẫn mở trong ứng dụng khác.
Vihung

Điều này có vẻ tương tự với một vấn đề tôi đang gặp phải - vẫn chưa có giải pháp. Tôi đã tải xuống tệp bằng Chrome, sau đó di chuyển tệp đó bằng Finder sang một thư mục khác. Nó hiển thị màu xám, vì vậy tôi sử dụng lsof để tìm xem ai đã mở tệp: Finder. Tôi đã thử buộc thoát khỏi Finder (tự động khởi chạy lại nó). Điều đó đã không hoạt động. Tôi đã thử đóng máy tính xách tay của mình, nghĩ rằng điều đó sẽ đưa mọi thứ vào chế độ ngủ và hy vọng sẽ giải quyết được vấn đề. Điều đó cũng không hoạt động. lsof tiếp tục hiển thị Finder là thủ phạm và nó tiếp tục hiển thị màu xám trong giao diện người dùng.
Victor Engel

1
Thật thú vị, việc đóng cửa sổ công cụ tìm kiếm dường như giải quyết được vấn đề. Tuy nhiên, nếu tôi mở một cửa sổ công cụ tìm mới và điều hướng đến cùng một thư mục, sự cố vẫn còn. Tôi đã giải quyết sự cố bằng cách kéo tệp có lỗi vào thùng rác (đưa ra cảnh báo rằng có thể có các hiệu ứng không phù hợp trong chương trình có tệp đang mở), sau đó mở lại tệp.
Victor Engel

94

Thật đơn giản: sudo fs_usage | grep [path_to_file]


10
Đây là câu trả lời tốt nhất ở đây.
NuSkooler

fs_usage nên được chạy dưới dạng root ... nó không phải là giải pháp tốt nhất.
bontoJR

Điều này cho thấy các sự kiện fs? Nếu một tiến trình có một tệp đang mở nhưng không làm gì với nó thì không có gì hiển thị ở đây. Hoặc ít nhất dường như là kinh nghiệm của tôi. sudo fs_usage | grep musiclibrarykhông hiển thị gì nhưng sudo lsof | grep musiclibrarycho thấy 3 quy trình truy cập tệp cơ sở dữ liệu thư viện nhạc của tôi.
gman

43

Nhưng tôi đã dành 2 phút cho Google và tìm thấy câu trả lời của bạn ở đây .

$ lsof | grep [bất cứ điều gì]

Nơi [bất cứ điều gì] được thay thế bằng tên tệp bạn đang tìm kiếm. Với điều này, bạn có thể thấy chương trình nào đang cố gắng giữ tệp sắp được chuyển vào thùng rác của bạn. Sau khi bạn thoát khỏi chương trình đó, thùng rác của bạn sẽ trống.


1
Vấn đề với điều đó là tôi phải thử và gõ lsof thật nhanh. nó có thể chỉ là thoáng qua
JPC

13
lsof puts -r lsof trong chế độ lặp lại
stoutyhk

Có ý nghĩa để grep nó trong trường hợp tệp đã được phát hành.
Ray Hunter

16

Cách nhanh hơn là:

$ lsof [path_to_file]

Giải pháp này không yêu cầu mật khẩu gốc và trả lại cho bạn kết quả rõ ràng như sau:

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
Finder     497  JR7   21r   REG    1,2   246223 33241712 image.jpg
QuickLook 1007  JR7  txt    REG    1,2   246223 33241712 image.jpg

15

Một lựa chọn khác là Sloth . Đó là GUI mã nguồn mở, miễn phí cho LSOF mà những người khác đã đề cập.


1
Wow đây là một công cụ thực sự tuyệt vời, cảm ơn vì đã chia sẻ! Nó hoạt động hoàn hảo để tìm kiếm một quá trình mà tôi đã mất dấu.
RayB 20/07/18

2
Tôi có xu hướng thích các giải pháp dòng lệnh hơn vì chúng dễ di chuyển hơn, nhưng tôi phải thừa nhận đây là một công cụ rất hay! Cám ơn vì sự gợi ý.
Biểu mẫu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.