monitorowanie zmian plików + dostęp procesowy do plików

19

Chciałbym zobaczyć, co dzieje się w folderach mojego serwera aplikacji, tj. Które pliki zostały zmienione przez proces x lub które *.warpliki zostały zmienione (zastąpione / utworzone) w ciągu ostatnich x minut.

Czy w systemie Linux jest na to narzędzie?

Martin V.
źródło
Witaj, przeczytaj ten przewodnik, aby skonfigurować auditd do monitorowania katalogów i plików xmodulo.com/how-to-monitor-file-access-on-linux.html
Sifungurux
1
Dotarłem do tego pytania za pomocą wyszukiwarki Google, ale znalazłem swoją odpowiedź tutaj: unix.stackexchange.com/questions/18844/…
Quentin Skousen
Spójrz na SystemTap. uselessuseofcat.com/?p=281
Steve

Odpowiedzi:

9

W zależności od konkretnych potrzeb możesz przyjrzeć się rozwiązaniom inotify i / lub FAM / GAMIN .

Peter
źródło
14

Strace (jak opisano powyżej) to jeden ze sposobów sprawdzenia działania określonego działającego oprogramowania.

Niektóre polecenia, takie jak, watch find dir/ -mmin 1mogą również pomóc w sprawdzeniu zmian z ostatniej minuty w jakimś katalogu.

W zależności od tego, czego dokładnie szukasz, inotify-tools jest prawdopodobnie kolejnym narzędziem handlu tutaj.

Na przykład inotifywait -mr dir/monitoruje zmiany w danym katalogu i natychmiast przekazuje informacje zwrotne o dowolnej aplikacji próbującej otworzyć / odczyt / zapis / zamknięcie pliku. Inotify nie przekazuje jednak opinii na temat tego, która aplikacja lub proces uzyskuje dostęp do pliku - robi to strace.

Należy pamiętać, że monitorowanie na poziomie systemu ma zwykle ograniczone zastosowanie w oprogramowaniu Java uruchomionym w niektórych środowiskach kontenerów aplikacji, ponieważ widzisz tylko kontener (np. Tomcat), ale nie rzeczywistą aplikację (np. War) wchodzącą w interakcje z systemem.

znanyepfchendruecker
źródło
8

Możesz uzyskać informacje o tym, które pliki są przetwarzane przez lsof :

 lsof -n -p `pidof your_app`

I odwrotnie, możesz uzyskać pid procesu, który zapisuje / odczytuje do jakiegoś pliku:

 lsof -n -t file
trankvilezator
źródło
6

Możesz użyć stracedo monitorowania wszystkich wywołań systemowych procesu, które obejmują dostęp do wszystkich plików.

Podczas uruchamiania programu:

$ strace ./myserver

możesz również dołączyć strace do uruchomionego procesu za pomocą jego PID:

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859
umläute
źródło
świetnie byłoby monitorować również według folderów, a nie według PID, dziękuję. btw strace -p PID działa dla mnie w Ubuntu.
Martin V.
0

watch find dir/ -mmin 1 nie działało dla mnie, wystarczyło skopiować i różnicować:

cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir

Jest dość zasobochłonny, ale pokazuje wszystkie zmiany między migawką a diffczasem.

serv-inc
źródło