Ich habe einen stündlichen Crontab-Job, der alle 10 Minuten mit einer mtr
( traceroute
) Ausgabe ausgeführt wird (dies wird mehr als eine Stunde dauern, bevor er per E-Mail an mich zurückgeschickt wird), und ich möchte den aktuellen Fortschritt sehen.
Unter Linux habe ich verwendet lsof -n | fgrep cron
( lsof
ähnelt BSDs fstat
), und es scheint, als hätte ich die Datei gefunden, aber sie wird als gelöscht kommentiert (eine Standardpraxis für temporäre Dateien ist direkt nach dem Öffnen zu löschen):
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
...
cron 21742 root 5u REG 202,0 7255 66310 /tmp/tmpfSuELzy (deleted)
Und kann nicht mehr mit seinem vorherigen Namen aufgerufen werden:
# stat /tmp/tmpfSuELzy
stat: cannot stat `/tmp/tmpfSuELzy': No such file or directory
Wie greife ich auf eine solche gelöschte Datei zu, die noch geöffnet ist?
/proc
sind gefälscht. Für/proc/*/fd/
Dateien, beim Aufrufstat
auf sie, sagen sie dir , es ist ein symbolischer Link, wenn Sie anrufenreadlink
auf sie, sie zurückkommen, was sie wollen (in diesem Fall ein absoluter Pfad zur Datei , die geöffnet wurde), und , wenn Sie anrufenopen
undread
auf sie erhalten Sie Zugriff auf eine etwas reale Datei mit Inhalten. Gleiches gilt für viele Dateien in/proc
. Beispielsweise haben die meisten dynamisch generierten Dateien eine Dateigröße von Null, haben jedoch Inhalt.ls -l --dereference-command-line /proc/1234/fd/5
die Größe einer geöffneten, aber gelöschten Datei überprüft.