Jak monitorować dostęp do plików dla aplikacji OS X?

61

Szukam korespondenta FileMon dla OS X, który został później włączony do ProcessMon .

BTW, niezbędna jest możliwość filtrowania według procesu.

sorin
źródło
Dodam trzy opcje - ponieważ dziedzictwo uniksowe systemu Mac OS X różni się od architektury NT - narzędzia nie nakładają się idealnie. Szukasz interfejsu API do programowania, czy po prostu narzędzi do podglądania tego, co się aktualnie dzieje (lub wyzwalania akcji po pewnych zmianach w pliku)
bmike

Odpowiedzi:

62

Instruments - część pakietu programistycznego Apple Xcode - może monitorować dostęp do wszystkich plików i zapisy. Otwórz go z /Applications/Xcode.app/Contents/Applications/Instruments.app, wybierz aplikację lub proces i naciśnij Start. Masz rozbudowane opcje filtrów dostępne w menu.

Starsze wersje Xcode przechowują aplikację na /Developer/Applications/Instruments.app

Aeyoun
źródło
7
Począwszy od Xcode 5, znajduje się teraz w /Applications/Xcode.app/Contents/Applications/Instruments.app - i można go również uzyskać z poziomu aplikacji XCode - Xcode-> Open Developer Tool-> Instruments.
Mixologic
To nie działa, jeśli dostęp do pliku nie dzieje się z powodu twojej aplikacji
liquidblueocean
W rzeczywistości nie działa w systemie OS X: „Aktywność we / wy nie obsługuje platformy macOS”. Przeczytaj także: stackoverflow.com/questions/35621938/…
Czy możesz podać więcej szczegółów na ten temat? Który instrument - monitor aktywności? Widzę tutaj długi wynik dla wszystkich procesów, nie jestem pewien, jak filtrować go na dyskowe operacje we / wy dla jednego procesu
Elliott
43

Jest polecenie opensnoop. Uruchamiany bez argumentów, może przytłoczyć Cię danymi wyjściowymi, ale może być uruchamiany z argumentami, -n nameaby ograniczyć dane wyjściowe do nazwanych procesów name.

Harald Hanche-Olsen
źródło
1
Podobnie sudo opensnoop | grep .classpathdaje na przykład dostęp do pliku ścieżki klas.
Dávid Natingga
1
Uwaga opensnoop i instrumenty są front-endami do tego samego silnika DTrace. Inne interfejsy: dtrace.org/blogs/brendan/2011/10/10/…
MarcH
13

Launchd to główne narzędzie do monitorowania plików na poziomie systemu (a folder jest plikiem specjalnym), ponieważ zawsze jest uruchomiony. Hazel to jeden program, który pomaga umieścić ładny GUI wokół uruchomionych WatchPaths. Zajrzyj tutaj, aby uzyskać wiele wskazówek na temat uruchomionych aplikacji, a także setki samouczków, dobry artykuł na Wikipedii i dokumenty programistów Apple.

fseventd zapisze pewne zmiany - możesz więc użyć FSeventer lub uzyskać dostęp do tych plików, jeśli uruchomione oprogramowanie nie jest twoją filiżanką herbaty.

fs_usage i lsof to proces świadomy linii poleceń narzędzie dopasować się do podsystemu IO jak to działa. Bufor fs_usage może zostać przeciążony, więc jeśli chcesz czegoś bardziej gwarantowanego i mniej „rzuć okiem”, jest mniej zależny od poprawnych wyników, tak jak inne polecenia.

bmike
źródło
Użyłem FSEventer kilka razy, aby dowiedzieć się, do czego aplikacja ma dostęp. Jest to świetne, gdy szukasz plików licencji do obrazowania systemu do wdrożenia laboratoryjnego.
Digitalchild,
fseventer doskonale nadaje się do wyświetlania dużego obrazu w czasie rzeczywistym, naprawdę widzisz, co się dzieje!
ling
1
Ponieważ FSeventer nie żyje, można również wypróbować FSMonitor.
GDP2
10

Nikt nie wspomniał o Monitoru aktywności, znalezionym w /Applications/Utilitiesfolderze.

Kliknij nazwę procesu na liście, a następnie naciśnij przycisk „Sprawdź” na pasku narzędzi.

Istnieją trzy zakładki w wyświetlonym oknie: Memory, Statistics, Open Files and Ports. Open Files and PortsZakładka pokaże wszystkie otwarte pliki, które są wykorzystywane w procesie.

ghoppe
źródło
1
To nie działa, jeśli plik jest uzyskiwany przez nieznaną aplikację
liquidblueocean
3

lsof

polecenie w Terminal.app może to dla Ciebie zrobić? użyj, man lsofaby nadrobić zaległości. Twoje zdrowie

KoLiNuS
źródło
3

Szybszy sposób to:

$ lsof [path_to_file]

To rozwiązanie nie wymaga hasła roota i daje następujący jasny wynik:

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
bontoJR
źródło
1

Dostępne są iosnooprównież w iotopzależności od konkretnych potrzeb. Te polecenia terminala mogą być przesyłane potokowo, grepaby sprawdzać zdarzenia systemu plików z określonego procesu lub z określonego pliku.

beporter
źródło
0

Istnieje graficzny interfejs do lsofwpisywania informacji. To oprogramowanie darowizn od HAMSoft i nazywa się What's Keeping Me . Zaprojektowany, aby odpowiedzieć na pytanie „Dlaczego nie mogę usunąć tego z kosza?” pytanie, które pojawia się tak często w systemie OS X, okazuje się również przydatnym sposobem na obserwowanie otwartych uchwytów we / wy w uruchomionych procesach, jeśli jesteś ciekawy, co się dzieje. Umożliwia proste wyszukiwanie i filtrowanie.

Ian C.
źródło