Entspricht SysInternals FileMon für Linux?

13

Ich versuche, eine Anwendung unter Ubuntu zu debuggen. Ich muss mir die Versuche anhören, Dateien zu öffnen (auch für Dateien, die nicht existieren).

Process Monitor (früher bekannt als FileMon ) ist unter Windows verfügbar - was befindet sich auf Ubuntus Utility-Gürtel?

Vielen Dank!

Ashley

Hühnchen-Keks
quelle

Antworten:

7

Du suchst nach Strace. Schauen Sie hier nach: https://wiki.ubuntu.com/Strace

Evan Anderson
quelle
2
Wie ich es verstehe, ermöglicht das Ausführen von filemon dem Benutzer, alle Dateizugriffe anzuzeigen. Andererseits müssen Sie angeben, welche App zuerst geöffnet werden soll. Dazu müssen Sie im Voraus wissen, welche App auf diese Dateien zugreift. Was ist, wenn Sie nicht wissen, welche App auf die Dateien zugreift, die Sie anzeigen möchten?
Chuacw
8

Es kommt darauf an, was Sie wollen:

  • Im Großen und Ganzen möchten Sie sich inotify ansehen , um alle Dateizugriffe zu sehen, die ein Prozess vornimmt.

  • In dem kleinen Menü können Sie die Systemaufrufe beobachten, die ein bestimmter Prozess durchführt. Strace ist ziemlich genial. Sie können beispielsweise die Aufrufe eines Prozesses nachverfolgen, um sie zu öffnen strace -f -eopen $cmd. Die Manpage enthält natürlich alle Details zur Syntax.

pjz
quelle
Danke pjz. Um genau zu sein - ich habe einige Probleme, mit Ogre3d unter Ubuntu zu beginnen. Meine Testanwendung scheint beim Start nach einigen .cfg-Dateien zu suchen. Ich möchte alle Versuche abhören, Dateien zu öffnen, damit ich sicherstellen kann, dass die richtigen Dateien verfügbar sind und die richtigen Berechtigungen haben.
Chickeninabiscuit
strace -e open ./app
Justin
2

straceVor einer Startanwendung ist gut zu beobachten, was die App macht.
lsofist schön zu sehen, welche Dateien eine bereits laufende App verwendet.

Übrigens:
lsof -ni:22 Zeigt an, welcher Prozess Port 22 verwendet.

ThorstenS
quelle
2

SGI hat ein Tool, das Sie vielleicht ausprobieren möchten: http://oss.sgi.com/projects/fam/

user10103
quelle
2
unter linux fam ist geschichte. Wirklich inotify heute verwenden
ThorstenS
1

Hier ist ein Beispiel für die Verwendung von strace zum Verfolgen von Dateiänderungen:

strace -f -e trace=file -p7546 -o /tmp/outputfile

-fstellt sicher, dass Ereignisse von untergeordneten Prozessen erfasst werden.
-e trace=filesagt , dass wir dateibezogenen syscalls (zB erfassen sollte stat, open, futexetc.)
-pwird die Prozess - ID (abgerufen aus ps -auxoder mit anderen Mitteln) -ospezifiziert die Ausgabedatei (es kann eine Menge Daten und Sie könnten stattdessen verwenden grep als Filter.

warte auf den Zug
quelle
1

Versuchen Sie es mit sysdig . Beispielsweise:

sysdig -A -c echo_fds

Singulett
quelle
0

Dies ist alt, aber ich denke, es ist eine gute Idee, es für die heutige Realität zu aktualisieren.

Für das Debuggen nur eines Prozesses und ihrer Kinder ist Strace immer noch der beste Weg. Es kann problemlos alle Dateizugriffe anzeigen, auch auf fehlende Dateien.

Für das generische System-Debugging kann die Audit-Funktion im Kernel dies und ist die empfohlene Methode. Es ist kein Patch für die neuesten Kernel erforderlich, nur das Audit-Paket ist installiert

Hier ist eine einfache Benutzeroberfläche:

audit-gui

Dies repliziert den Windows - Filemon und überwacht den Dateizugriff auf alle Bereiche, Prozesse usw

Überprüfen Sie auch diesen Beitrag

Higuita
quelle
0

Das hat bei mir gut funktioniert (Linux Mint 19.1):

sudo lsof 2>&1 | grep programnamehere

2>&1Ich bin mir nicht sicher, warum es gebraucht wurde, aber es wurde nicht gefiltert, es sei denn, ich habe es benutzt.

Andrew
quelle