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/fd
ich 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 open
Aufruf 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
.
open()
Systemaufruf angezeigt , der den Pfad enthält.write(12, 'done', 4) = 4
, würde ich lieber sehenwrite(4 [/var/log/prog], 'done', 4) = 4
(oder ähnlich). Ich möchte den Dateinamen des fd in der Strace-Ausgabe sehen, wenn es einenread
/write
/ etc-Anruf gibtAntworten:
Ein kurzer Blick durch das feine Handbuch zeigt:
quelle