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?


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:



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.


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

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

ś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.

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.