Überwachung von Dateiänderungen + Prozesszugriff auf Dateien

19

Ich möchte sehen, was in meinen App-Server-Ordnern passiert, dh welche Dateien von process x geändert wurden oder welche *.warDateien in den letzten x Minuten geändert (ersetzt / erstellt) wurden.

Gibt es in Linux ein Tool, das dabei hilft?

Martin V.
quelle
Hallo versuchen , einen Blick dieser Anleitung zu nehmen auditd einzurichten Verzeichnisse zu überwachen und Dateien xmodulo.com/how-to-monitor-file-access-on-linux.html
Sifungurux
1
Ich bin über die Google-Suche auf diese Frage gekommen, habe meine Antwort jedoch hier gefunden: unix.stackexchange.com/questions/18844/…
Quentin Skousen
Schauen Sie sich SystemTap an. uselessuseofcat.com/?p=281
steve

Antworten:

13

Strace (wie oben beschrieben) ist eine Möglichkeit, die Aktionen einer bestimmten ausgeführten Software zu überprüfen.

Einige Befehle wie watch find dir/ -mmin 1können auch dazu beitragen, in einem Verzeichnis nach Änderungen der letzten Minute zu suchen.

Je nachdem, wonach Sie genau suchen, ist inotify-tools wahrscheinlich ein weiteres Handwerkszeug.

inotifywait -mr dir/Überwacht z. B. Änderungen im angegebenen Verzeichnis und gibt Ihnen sofort Feedback zu jeder Anwendung, die versucht, eine Datei zu öffnen, zu lesen, zu schreiben oder zu schließen. Inotify gibt Ihnen jedoch kein Feedback darüber, welche Anwendung oder welcher Prozess auf die Datei zugreift.

Bitte beachten Sie, dass die Überwachung auf Systemebene für Java-Software, die in einigen Anwendungscontainerumgebungen ausgeführt wird, in der Regel nur von begrenztem Nutzen ist, da nur der Container (z. B. Tomcat), nicht jedoch die tatsächliche Anwendung (z. B. war) mit dem System interagiert.

knoepfchendruecker
quelle
8

Sie können von lsof Informationen darüber erhalten, auf welche Dateien von process zugegriffen wird :

 lsof -n -p `pidof your_app`

Und umgekehrt können Sie Prozess-PIDs erhalten, die in eine Datei schreiben / lesen:

 lsof -n -t file
Trankvilezator
quelle
6

Sie können stracealle Systemaufrufe eines Prozesses überwachen, einschließlich des gesamten Dateizugriffs.

Beim Starten eines Programms:

$ strace ./myserver

Sie können einem laufenden Prozess auch über seine PID eine Strace zuweisen:

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859
umläute
quelle
wäre toll, auch per ordner nicht per pid zu überwachen, danke. Übrigens: strace -p PID funktioniert bei mir in Ubuntu.
Martin V.
0

watch find dir/ -mmin 1 hat bei mir nicht geklappt, es wurde einfach kopiert und unterschieden:

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

Es ist ziemlich ressourcenintensiv, zeigt aber alle Änderungen zwischen dem Schnappschuss und der diffZeit an.

serv-inc
quelle