Kontinuierliche Überwachung von Dateien, auf die ein Prozess zugreift

25

lsof -p 12345 listet alle Dateien auf, die von einem Prozess geöffnet wurden, dessen PID 12345 ist, jedoch nur für einen bestimmten Zeitpunkt.

Wie können wir einen Prozess kontinuierlich vom Anfang bis zum Ende überwachen (bis der Prozess beendet ist), um jede einzelne Datei aufzulisten / anzuzeigen, auf die der Prozess während seiner gesamten Lebensdauer zugreift?

MA1
quelle

Antworten:

31

Versuchen Sie es mit strace -p 12345; Es sollte das tun, was Sie erreichen wollen.

Die Ausgabe kann gefiltert werden, um nur geöffnete Dateien anzuzeigen ( Dan D.'s Kommentar ):

strace -e open -p 12345

Hinweis: Mit können Sie auch schnell laufende Prozesse verfolgen strace -e open <command>.

Jens Erat
quelle
Ausgabe ist nicht freundlich und zu viele zusätzliche Dinge.
MA1
Sie können das durch Verrohrung beheben strace -p {pid} | grep -i "Open" | tee files_opened.log. Mit der Taste grepkönnen Sie die Ausgabe nach dem gewünschten Systemaufruf filtern (z open(). B. ).
11
@Ninefingers Eigentlich stracekann das besser als grepmit der -eOption:strace -e open
Dan D.
@DanD oh yeah, ofc :)
Wenn ich den Befehl strace töte, tötet er auch das, was er verfolgt. Warum passiert das (cygwin)?
CMCDragonkai
6

Das neue Dienstprogramm Fatrace wird dies tun: https://launchpad.net/fatrace/

sudo fatrace | grep '(6514)'

Verwenden Sie nicht die Option -p, da dies das Gegenteil von dem bedeutet, was es in lsof oder anderen Dienstprogrammen bedeutet.

Bryce
quelle
3

Dadurch wird Ihr Befehl wiederholt und der Bildschirm jedes Mal gelöscht:

watch "lsof -p 12345"

WARNUNG: Dadurch werden schnelle Dateizugriffe verpasst und es können nur langjährige Dateien angezeigt werden

jcalfee314
quelle
2
Dies ist etwas umständlich im Vergleich zu der anderen Antwort mit strace.
David Foerster
1
Das ist eine ungenaue Lösung - ein Prozess verwendet möglicherweise Dateien zwischen den Ausführungen vonlsof
Dor am
@Denn Sie können das Timing von lsof auf unter 1 Sekunde einstellen und die Genauigkeit erhöhen. Es ist zwar ungeschickt im Vergleich zu anderen, aber Sie irren sich darin, dass es eine ungenaue Lösung ist.
Jordon Bedwell
Wenn Sie eine lange Dateioperation betrachten (wie eine Datenbanksicherung), ist dies möglicherweise eine gute einfache Alternative.
jcalfee314