2013-08-13 16 views

risposta

5

Il file non viene eliminato finché alcuni processi hanno il file aperto. Quando un file viene chiuso, il kernel prima controlla il conteggio del numero di processi in cui il file è aperto. Se questo conteggio ha raggiunto 0, il kernel controlla il conteggio dei collegamenti; se è 0, il contenuto del file viene cancellato.

Per citare da uomo unlink:

Se il nome è stato l'ultimo link ad un file, ma tutti i processi hanno ancora il file aprire il file rimarrà in esistenza fino all'ultimo file descrittore riferendosi ad essa è chiuso.

+0

Ciò significa che lo scollegamento rimuove sempre il nome e talvolta elimina il file. Se puoi vedere il file in 'ls', il nome non è stato rimosso. Quindi non è quello che sta succedendo. Puoi testare questo aprendo un file in un processo, poi cancellandolo in un altro e facendo 'ls'. – philh

5

Quando un file viene eliminato, non è stato visto sul file system. Tuttavia, è del tutto possibile che un altro file con lo stesso nome di file sia creato nella stessa posizione.

È possibile controllare il numero di nodo mostrato in lsof e ls -i per verificare se sono realmente lo stesso file.