2013-08-13 14 views

Odpowiedz

5

Plik nie jest usuwany, dopóki w pewnym procesie otwarty jest plik. Gdy plik jest zamknięty, jądro sprawdza najpierw liczbę procesów, które mają otwarty plik. Jeśli liczba ta osiągnie 0, jądro sprawdza liczbę połączeń; jeśli jest 0, zawartość pliku zostanie usunięta.

Cytując od człowieka unlink:

Jeśli nazwa była ostatnim ogniwem w pliku ale wszelkie procesy jeszcze plik otworzyć plik pozostanie w istnieniu, aż do ostatniego pliku deskryptor odnoszący się do niego zamknięte.

+0

Oznacza to, że odłączenie zawsze usuwa nazwę, a czasami kasuje plik. Jeśli widzisz plik w 'ls', nazwa nie została usunięta. Więc nie o to chodzi. Możesz to sprawdzić, otwierając plik w jednym procesie, a następnie usuwając go w innym i wykonując 'ls'. – philh

5

Gdy plik zostanie usunięty, nie będzie widoczny w systemie plików. Jednak jest całkiem możliwe, że inny plik o tej samej nazwie pliku zostanie utworzony w tej samej lokalizacji.

Można sprawdzić numer węzła widoczny w lsof i ls -i, aby sprawdzić, czy rzeczywiście są to te same pliki.

Powiązane problemy