Quando rm rimuove i file aperti?

In particolare, voglio sapere cosa succede quando rm un file aperto e non uccidere esplicitamente il process che contiene il descrittore di file a quel file. Il file verrà rimosso quando il sistema viene arrestato?

Fondamentalmente, sì – each volta che il process che tiene aperto muore. Nulla "magico" succede a quel punto. Proprio come una voce di directory per il file è un "collegamento duro" ai blocchi che contengono i dati del file, così è una maniglia di file aperta. Se non esiste alcuna voce di directory e nessun handle di file aperto, i blocchi sono liberi di essere riutilizzati. Ciò significa che anche se non si effettua una chiusura (ad esempio, il cavo di alimentazione) il file verrà ancora eliminato – è stato "eliminato" quando è stato eseguito rm, solo i suoi blocchi non sono immediatamente disponibili per il riutilizzo.

il kernel mantiene una copia dell'inode di file di memory bloccata in modo che i blocchi dati appartenenti a questo file e all'inode non possano essere rilasciati mentre un process ha aperto il file. Una volta che il file è definitivamente chiuso (come accade quando il sistema viene arrestato e il process viene ucciso), tutti i blocchi e l'inode vengono rilasciati per il riutilizzo. Ciò avviene prima che il filesystem possa essere smontato (non può essere smontato se ha file aperti) e il sistema è arrestato.