Kann mir den Dateinamen / Pfad für Lese- / Schreib-Systemaufrufe anzeigen

9

Wenn ich unter Linux einen Prozess durchführe, werden die Lese- und Schreibvorgänge mit der Handle-Nummer des Dateideskriptors angezeigt. Wenn ich hineinschaue, sehe /proc/$PID/fdich die Symlinks zu den Dateien, die der fd-Nummer entsprechen (falls zutreffend).

Gibt es überhaupt eine Möglichkeit, strace dazu zu bringen, dies für mich nachzuschlagen und mir (durch Dereferenzieren des Symlinks) den Dateinamen in der Strace-Ausgabe anzuzeigen? Es sucht bereits nach Linux-Fehlern und schneidet Zeichenfolgen ab und codiert sie. Kann es dies auch tun?

Update: Ich weiß, dass strace den openAufruf angezeigt hat, der den Pfad & fd anzeigt. Was für kurz laufende Prozesse in Ordnung ist. Aber nehmen wir an, ich habe einen sehr langen Prozess (gemessen in Tagen) und habe das Ganze nicht unter Druck gesetzt, sondern erst später mit verbunden strace -p.

Rory
quelle
Zuvor wurde der entsprechende open()Systemaufruf angezeigt , der den Pfad enthält.
Michael Hampton
Wollen Sie damit sagen, dass Sie Strace-Informationen von einem Prozess erhalten möchten, ohne Strace zum Zeitpunkt der Systemaufrufe auszuführen?
Ryan Babchishin
Nein, ich möchte mich auf einen Prozess konzentrieren und sehen, was los ist. Aber anstatt write(12, 'done', 4) = 4, würde ich lieber sehen write(4 [/var/log/prog], 'done', 4) = 4(oder ähnlich). Ich möchte den Dateinamen des fd in der Strace-Ausgabe sehen, wenn es einen read/ write/ etc-Anruf gibt
Rory

Antworten:

19

Ein kurzer Blick durch das feine Handbuch zeigt:

   -y          Print paths associated with  file  descriptor  argu-
               ments.
Thrig
quelle