Was passiert mit den Dateien, die gelöscht werden, während ein Dateihandle für sie geöffnet ist?
Ich habe mich das gefragt, seit ich herausgefunden habe, dass ich eine Videodatei löschen kann, während sie in MPlayer abgespielt wird und bis zum Ende abgespielt wird . Woher bezieht es die Daten? Kommt es noch von der Festplatte? Wurde es nach dem Löschen der Datei in den Arbeitsspeicher kopiert?
Wenn es sich noch auf der Festplatte befindet, was passiert, wenn ich das Dateisystem auffülle, während das Programm das Lesen aus dem im Wesentlichen nicht zugewiesenen Speicherplatz ausführt? Wenn es im RAM gepuffert ist, was passiert, wenn ich die Puffer leere?
Was passiert, wenn sich die Datei auf einer NFS-Freigabe befindet - wird sie auf dem Server gespeichert? (Ist das nicht ein Sicherheitsrisiko - viele offene Remote-Datei-Handles?)
lsof -n |grep '(deleted)'
Manchmal führt das Ausführen eines Tests zu interessanten Ergebnissen. Wenn ich Pakete aktualisiere, die gemeinsam genutzte Bibliotheksdateien austauschen, können Programme, die diese Bibliotheken verwendet haben, diese weiterhin verwenden, als ob sich nichts geändert hätte.
Bonusfrage: Gibt es in dieser Situation eine Möglichkeit, die Daten von den Toten zurückzubekommen?