Làm cách nào để theo dõi truy cập tệp cho ứng dụng OS X?


61

Tôi đang tìm kiếm nhân viên OS X của FileMon, sau này được đưa vào ProcessMon .

BTW, điều cần thiết là có thể lọc theo quy trình.


Tôi sẽ thêm ba tùy chọn - vì di sản unix của Mac OS X khác với kiến ​​trúc NT - các công cụ không trùng lặp hoàn hảo. Bạn đang tìm kiếm một API để lập trình hay chỉ là công cụ để xem xét những gì đang xảy ra (hoặc kích hoạt các hành động sau khi một số thay đổi tệp nhất định)
bmike

Câu trả lời:


62

Các công cụ, một phần của bộ phát triển Apple Xcode Apple có thể giám sát tất cả các quyền truy cập và ghi tệp. Mở nó từ /Appluggest/Xcode.app/Contents/Appluggest/Instrument.app, chọn ứng dụng hoặc quy trình của bạn và nhấn Bắt đầu. Bạn có nhiều tùy chọn bộ lọc có sẵn trong các menu.

Các phiên bản cũ hơn của Xcode đang lưu trữ Ứng dụng tại /Developer/Appluggest/Instrument.app


7
Kể từ Xcode 5, giờ đây, nó nằm trong /Appluggest/Xcode.app/Contents/Appluggest/Instrument.app - và cũng có thể truy cập từ trong ứng dụng XCode - Xcode-> Open Tool Tool-> Dụng cụ.
Mixologic

Điều này không hoạt động nếu tệp đang được truy cập không xảy ra do ứng dụng của bạn
liquidblueocean 14/12/17

Trên thực tế, nó không hoạt động cho OS X: "Hoạt động I / O không hỗ trợ nền tảng macOS". Đồng thời đọc: stackoverflow.com/questions353621938/ từ

Bạn có thể cung cấp thêm chi tiết về điều này? Công cụ nào - Giám sát hoạt động? Tôi đang thấy một đầu ra dài cho tất cả các quy trình ở đây, không biết làm thế nào để lọc nó vào đĩa i / o cho một quy trình
Elliott

43

Có lệnh opensnoop. Chạy mà không có đối số, nó có thể áp đảo bạn với đầu ra, nhưng nó có thể được chạy với các đối số -n nameđể giới hạn đầu ra cho các quy trình được đặt tên name.


1
Tương tự như vậy sudo opensnoop | grep .classpathcho phép bạn truy cập vào một tệp classpath chẳng hạn.
Dávid Natingga

1
Lưu ý opensnoop và Dụng cụ đều là giao diện người dùng cho cùng một công cụ DTrace. Các giao diện khác: dtrace.org/bloss/brendan/2011/10/10/ mẹo
MarcH

13

Launchd là công cụ cấp hệ thống chính để theo dõi các tệp (và một thư mục là một tệp đặc biệt) vì nó luôn chạy. Hazel là một chương trình giúp đặt một GUI đẹp mắt xung quanh các WatchPath khởi chạy. Nhìn vào đây để biết rất nhiều lời khuyên về launchd cũng như hàng trăm hướng dẫn, một bài viết wikipedia tốt và các tài liệu dev của Apple.

fseventsd sẽ ghi lại một số thay đổi - vì vậy bạn có thể sử dụng FSeventer hoặc truy cập các tệp đó nếu launchd không phải là tách trà của bạn.

fs_usagelsof là công cụ dòng lệnh nhận biết quy trình để truy cập vào hệ thống con IO khi nó đang chạy. Bộ đệm fs_usage có thể bị quá tải, vì vậy nếu bạn muốn một cái gì đó được bảo đảm hơn và ít "nhìn nhanh hơn" thì nó không đáng tin cậy cho tổng kết quả chính xác như các lệnh khác.


Tôi đã sử dụng FSEventer khá nhiều lần để tìm hiểu những gì ứng dụng đang truy cập. Điều này thật tuyệt khi tìm kiếm các tệp giấy phép để chụp ảnh hệ thống để triển khai phòng thí nghiệm.
Digitalchild

fseventer là tuyệt vời để có bức tranh lớn thời gian thực, bạn thực sự thấy những gì đang diễn ra!.
ling

1
Vì FSeventer đã chết, người ta cũng có thể dùng thử FSMonitor.
GDP2

10

Không ai đã đề cập đến Activity Monitor, được tìm thấy trong /Applications/Utilitiesthư mục.

Nhấp vào Tên quy trình trong danh sách, sau đó nhấn nút "Kiểm tra" trên thanh công cụ.

Có ba tab trong cửa sổ kết quả: Memory, Statistics, Open Files and Ports. Các Open Files and Portstab sẽ hiển thị tất cả các file mở được sử dụng bởi quá trình này.


1
Điều này không hoạt động nếu tệp đang được truy cập bởi một ứng dụng không xác định
liquidblueocean 14/12/17

3

lsof

Lệnh trên Terminal.app có thể làm điều đó cho bạn? sử dụng man lsofđể bắt kịp với nó sử dụng. Chúc mừng


3

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à cung cấp cho bạn kết quả sau, rõ ràng:

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

1

Cũng có sẵn iosnoopiotoptùy thuộc vào nhu cầu cụ thể của bạn. Các lệnh đầu cuối này có thể được dẫn qua grepđể theo dõi các sự kiện hệ thống tệp từ một quy trình cụ thể hoặc đối với một tệp cụ thể.


0

Có một giao diện đồ họa để lsofnhập thông tin. Đó là phần mềm quyên góp từ HAMSoft và nó được gọi là What Keeping Me . Được thiết kế để trả lời rằng "Tại sao tôi không thể xóa cái này khỏi thùng rác?" câu hỏi xuất hiện thường xuyên trên OS X, đây cũng là một cách hữu ích để theo dõi các xử lý I / O mở đối với các tiến trình đang chạy nếu bạn chỉ tò mò về những gì đang diễn ra. Nó cho phép bạn một số tìm kiếm và lọc đơn giản.

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.