Odpowiednik SysInternals FileMon dla systemu Linux?


Odpowiedzi:


7

Szukasz strace. Zajrzyj tutaj: https://wiki.ubuntu.com/Strace


2
Jak rozumiem, uruchomienie filemona pozwala użytkownikowi zobaczyć wszystkie dostępy do plików. Z drugiej strony, musisz określić, która aplikacja ma zostać otwarta jako pierwsza. Wymaga to wcześniejszej znajomości aplikacji, która uzyskuje dostęp do tych plików. Co zrobić, jeśli nie wiesz, która aplikacja uzyskuje dostęp do plików, które chcesz obejrzeć?
chuacw,

8

To zależy od tego, czego chcesz:

  • Na ogół chcesz spojrzeć na inotify, aby zobaczyć wszystkie dostępy do plików dokonywane przez dowolny proces.

  • W małej, strace pozwoli ci obserwować wywołania systemowe wywołane przez określony proces. Strace jest niesamowity. Możesz na przykład śledzić wywołania procesu w celu „otwarcia” strace -f -eopen $cmd. Strona człowiek ma pełne szczegóły dotyczące składni, oczywiście.


Dzięki pjz. Mówiąc konkretnie - mam problem z uruchomieniem Ogre3d na Ubuntu. Wygląda na to, że moja aplikacja testowa szuka plików .cfg podczas uruchamiania. Chcę słuchać wszystkich prób otwierania plików, aby zapewnić, że prawidłowe pliki są dostępne i mają odpowiednie uprawnienia.
chickeninabiscuit

strace -e open ./app
Justin

2

straceprzed aplikacją startową dobrze jest obserwować, co robi aplikacja.
lsofdobrze jest zobaczyć, z jakich plików korzysta już uruchomiona aplikacja.

BTW:
lsof -ni:22 pokazuje, który proces używa portu 22.



1

Oto przykład użycia strace do śledzenia zmian plików:

strace -f -e trace=file -p7546 -o /tmp/outputfile

-fzapewnia przechwytywanie zdarzeń z procesów potomnych.
-e trace=filemówi, że powinniśmy uchwycić wywołań systemowych związanych plikach (np stat, open, futexitd.)
-pjest identyfikator procesu (pobierane z ps -auxlub innych środków) -ookreślono OutPutFile (może być wiele danych i można zamiast tego użyć grep jako filtr.




0

To stare, ale myślę, że dobrym pomysłem jest zaktualizowanie go do dzisiejszej rzeczywistości.

Do debugowania tylko jednego procesu i ich dzieci, strace jest nadal najlepszym sposobem. Może z łatwością wyświetlać dostęp do wszystkich plików, nawet w przypadku brakujących plików.

W przypadku ogólnego debugowania systemu funkcja kontroli w jądrze może to zrobić i jest to zalecany sposób. Nie potrzebuje żadnej łaty na najnowsze jądra, wystarczy zainstalować pakiet audytu

Oto proste GUI do korzystania z niego:

audyt-gui

To replikuje filemona systemu Windows, monitoruje dostęp do pliku dla wszystkich miejsc, procesów itp

sprawdź także ten post


0

Oto, co działało dla mnie dobrze (Linux Mint 19.1):

sudo lsof 2>&1 | grep programnamehere

Nie jestem pewien, dlaczego 2>&1był potrzebny, ale nie filtrował, chyba że go użyłem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.