
Mir ist aufgefallen, dass ich bei der Wiedergabe eines Videos tatsächlich die Umschalt-Entf-Taste drücken kann (d. h. es wandert nicht in den Papierkorb), und die Wiedergabe läuft trotzdem weiter, obwohl in nautilus
oder ls
(im Terminal) kein benannter Verweis darauf vorhanden ist.
Wird der Speicherplatz normal freigegeben, wenn der Player mit dem Video fertig ist?
Ich gehe davon aus, dass es sich um ein normales Verhalten handelt, aber für mich ist es sicherlich eine neue Erfahrung (da dies unter Windows einfach nicht möglich war).
Antwort1
Obwohl Sie die Datei gelöscht haben, wird sie noch verwendet, da sie in Ihrem Player geöffnet ist. Sobald Sie den Media Player schließen, gibt er den Zugriff auf die Dateidaten frei und sie werden gelöscht.
Sie können dies mit dem lsof
Befehl überprüfen, der offene Dateien auflistet. Wenn Sie lsof ausführen, sollte Ihre Filmdatei vom Player als geöffnet aufgelistet werden, aber daneben steht „DEL“, was bedeutet, dass sie gelöscht wurde, obwohl sie noch geöffnet ist.
Das ist eigentlich alles eine nützliche Sache und würde bedeuten, dass Sie tatsächlich geöffnete Dateien wiederherstellen könnten, die Sie gelöscht haben, obwohl das wahrscheinlich besser einer anderen Frage überlassen werden sollte :)
Dies liegt daran, dass (soweit ich weiß) Dateien aus den Daten selbst und Handles (Speicherort im Dateisystem) für die Datei bestehen. Normalerweise haben Sie nur einen einzigen Handle für eine Datei, aber Sie können mit dem ln
Befehl zum Erstellen eines Hardlinks weitere erstellen. Dadurch wird scheinbar eine identische Kopie Ihrer Datei erstellt, aber in Wirklichkeit wird nur ein weiterer Handle hinzugefügt – Sie haben also nicht doppelt so viel Speicherplatz verbraucht. Sie können dies überprüfen, indem Sie sich den Inode der beiden Dateien ansehen – dieser zeigt Ihnen, wo sich die Daten tatsächlich befinden.
Also zB in einem Terminalfenster:
ln existing_movie.avi movie_hardlink.avi
ls -i
Das Argument -i für ls zeigt die Inode-Informationen für Dateien – sie sollten identisch sein.
Wenn Sie eine dieser Dateien löschen, bleiben die Daten erhalten, da die andere noch einen Handle zum Inode enthält. Sobald Sie die zweite Datei löschen, hat der Inode keine verbleibenden Handles/Referenzen mehr und wird daher gelöscht/als ungenutzter Speicherplatz markiert. Dies ist direkt analog zu dem Fall, wenn Ihr Player den Film geöffnet hat, mit der Ausnahme, dass sich der zweite Handle hier innerhalb des laufenden Programms und nicht in einer zweiten Datei im Dateisystem befindet.
Antwort2
lesenhttp://linuxgazette.net/105/pitcher.html, werden Sie verstehen, warum (und den Unterschied zwischen Hard- und Softlinks lernen)