2013-08-13 4 views

Antwort

5

Die Datei wird nicht gelöscht, solange ein Prozess die Datei geöffnet hat. Wenn eine Datei geschlossen wird, überprüft der Kernel zuerst die Anzahl der Prozesse, bei denen die Datei geöffnet ist. Wenn diese Anzahl 0 erreicht hat, prüft der Kernel die Anzahl der Verbindungen. Wenn es 0 ist, werden die Inhalte der Datei gelöscht.

Um von Mann zu zitieren unlink:

Wenn der Name das letzte Glied in eine Datei, sondern alle Prozesse noch die Datei öffnen, die Datei wird in Existenz bis zur letzten Datei bleiben Descriptor darauf zu verweisen ist geschlossen.

+0

Das sagt Unlink entfernt immer den Namen und manchmal löscht die Datei. Wenn Sie die Datei in 'ls' sehen können, wurde der Name nicht entfernt. Das ist also nicht so. Sie können dies testen, indem Sie eine Datei in einem Prozess öffnen und dann in einem anderen löschen und "ls" ausführen. – philh

5

Wenn eine Datei gelöscht wird, wird sie im Dateisystem nicht angezeigt. Es ist jedoch durchaus möglich, dass an demselben Speicherort eine andere Datei mit demselben Dateinamen erstellt wird.

Sie können die Knotennummer überprüfen, die in lsof und ls -i angezeigt wird, um zu überprüfen, ob sie wirklich die gleiche Datei sind.

Verwandte Themen