Як відстежувати доступ до файлів для програми OS X?


61

Я шукаю файл OS X FileMon, який згодом був включений до ProcessMon .

До речі, важливо мати можливість фільтрувати за процесом.


Я додам три варіанти - оскільки спадщина Unix Mac OS X відрізняється від архітектури NT - інструменти не перетинаються ідеально. Шукаєте API для програмування або просто інструменти, щоб зазирнути в те, що зараз відбувається (або запустити дії після певних змін у файлі)
bmike

Відповіді:


62

Інструменти - частина набору розробок Apple Xcode - можуть контролювати доступ до всіх файлів та записи. Відкрийте його з /Applications/Xcode.app/Contents/Applications/Instruments.app, виберіть програму чи процес та натисніть кнопку Пуск. У меню доступні широкі параметри фільтра.

Старіші версії Xcode зберігають додаток за адресою /Developer/Applications/Instruments.app


7
Станом на Xcode 5, це тепер знаходиться в /Applications/Xcode.app/Contents/Applications/Instruments.app - і його можна також отримати в додатку XCode - Xcode-> Open Developer Tool-> Instruments.
Mixologic

Це не працює, якщо доступ до файлу не відбувається через вашу заявку
liquidblueocean

Насправді це не працює для OS X: "Дія вводу / виводу не підтримує платформу macOS". Також читайте: stackoverflow.com/questions/35621938 / ...

Чи можете ви надати більш детальну інформацію про це? Який інструмент - Монітор активності? Я бачу довгий вихід для всіх процесів тут, не впевнений, як відфільтрувати його на диску i / o для одного процесу
Елліотт

43

Є команда opensnoop. Запуск без аргументів, вона може захлеснути вас з виходом, але він може працювати з аргументами , -n nameщоб обмежити висновок процеси по імені name.


1
Аналогічно sudo opensnoop | grep .classpathдає вам доступ, наприклад, до файлу classpath.
Dávid Natingga

1
Зауважте, що opennoop та Instruments є обома передніми частинами одного і того ж двигуна DTrace. Інші передні частини: dtrace.org/blogs/brendan/2011/10/10/…
MarcH

13

Launchd - це основний інструмент системного рівня для моніторингу файлів (а папка - це спеціальний файл), оскільки він завжди працює. Hazel - це одна з програм, яка допомагає розмістити гарний графічний інтерфейс навколо запущених WatchPaths. Подивіться тут безліч порад щодо запуску, а також сотні навчальних посібників, хорошу статтю у Вікіпедії та документи розробника Apple.

fseventsd запише деякі зміни - тому ви можете використовувати FSeventer або отримати доступ до цих файлів, якщо запуск не є вашою чашкою чаю.

fs_usage та lsof - це інструмент командного рядка, що обізнаний з процесом, щоб ввімкнути підсистему IO під час роботи. Буфер fs_usage може перевантажуватися, тому, якщо ви хочете чогось більш гарантованого та менш "швидкого погляду", це менш надійно для повних правильних результатів, як і інші команди.


Я вже декілька разів використовував FSEventer, щоб дізнатися, що програма отримує доступ. Це чудово під час пошуку файлів ліцензій для системних зображень для розгортання лабораторії.
Digitalchild

fseventer чудово мати велику картину в реальному часі, ви дійсно бачите, що відбувається !.
лінг

1
Оскільки FSeventer мертвий, можна також спробувати FSMonitor.
ВВП2

10

Ніхто не згадав Монітор активності, знайдений у /Applications/Utilitiesпапці.

Клацніть на назві процесу у списку, а потім натисніть кнопку «Перевірити» на панелі інструментів.

Є три вкладки у вікні: Memory, Statistics, Open Files and Ports. На Open Files and Portsвкладці будуть показані всі відкриті файли, які використовує процес.


1
Це не працює, якщо доступ до файлу невідомий додаток
liquidblueocean

3

lsof

команда на Terminal.app може це зробити для вас? використовувати, man lsofщоб наздогнати його використання. Ура


3

Швидший шлях:

$ lsof [path_to_file]

Це рішення не вимагає кореневого пароля і дає вам такий, зрозумілий, результат:

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

Також доступні iosnoopта iotopзалежать від ваших конкретних потреб. Ці термінальні команди можна пропустити grepдля спостереження за подіями файлової системи з певного процесу або проти певного файлу.


0

Існує графічний інтерфейс для lsofвведення інформації. Це програмне забезпечення від HAMSoft і називається What Keep Me Me . Розроблений, щоб відповісти, що "Чому я не можу видалити це зі свого сміття?" питання, яке виникає так часто в OS X, також трапляється зручним способом спостереження за відкритими ручками вводу / виводу на запущених процесах, якщо вам просто цікаво, що відбувається. Це дозволяє вам простий пошук і фільтрування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.