bash: Überwachen, welche Dateien von einem Prozess in Echtzeit verwendet werden

388
Jezor

Gibt es einen Befehl, um zu verfolgen, welche Dateien vom Programm mit gegebener PID in Echtzeit geöffnet / geschlossen / geschrieben werden?

Ich möchte:

  1. Ein Programm ausführen,
  2. Aktivieren der Überwachung von Programmdateien
  3. mache Sachen im Programm,
  4. Überprüfen Sie, welche Dateien in der Zeit geändert wurden, als ich etwas getan habe.

Ich brauche so etwas wie lsof, aber es sollte in Echtzeit Operationsinformationen anhängen.

0
Haben Sie über Strace nachgedacht? Es würde Ihnen alle diese Informationen geben. John1024 vor 8 Jahren 3
John: Ja, aber strace ist ein sehr komplexes Werkzeug und ich weiß nicht wirklich, wie ich Daten extrahieren kann, die ich brauche. Jezor vor 8 Jahren 0
Ich stimme Ihnen zu, dass die Ausgabe der strace _ugly_ ist, aber "strace" ist leicht auszuführen und die Ausgabe ist nicht so schwer zu interpretieren. Wenn beispielsweise eine Zeile mit `open (`) beginnt, wird eine Datei geöffnet. Wenn eine Zeile mit `write (`) beginnt, wird in eine Datei geschrieben. [Klicken Sie hier, um ein Beispiel für eine strace-Ausgabe anzuzeigen.] (Http : //stackoverflow.com/a/27075334/3030305) Ich verstehe jedoch, wenn Sie auf ein besseres, benutzerfreundlicheres Werkzeug hoffen. John1024 vor 8 Jahren 1
Wenn Sie die Befehlszeilenoptionen für `strace` betrachten, werden Sie feststellen, dass Sie die Ausgabe einschränken können. zB nur für E / A-bezogene Operationen. Scott vor 8 Jahren 1
Ich habe endlich eine bessere Lösung gefunden als strace (in meinem Fall): https://github.com/ole-tange/tangetools/blob/master/tracefile/tracefile Jezor vor 8 Jahren 0
@Jezor: Ich lade Sie ein, (1) in den Antworten [Wie empfehle ich Software?] (Http://meta.superuser.com/q/5329/150988) zu lesen und dann (2) Ihre Entdeckung aufzuschreiben * als Antwort * (unten). Scott vor 8 Jahren 0

0 Antworten auf die Frage