Quando o rm remove arquivos abertos?

3

Particularmente, quero saber o que acontece quando eu rm um arquivo aberto e não mato explicitamente o processo que contém o descritor de arquivo para esse arquivo. O arquivo será removido quando o sistema for desligado?

    
por Gabriel Ščerbák 25.06.2011 / 13:10

2 respostas

3

Basicamente, sim - sempre que o processo que o mantém aberto morre. Nada "mágico" acontece naquele momento. Assim como uma entrada de diretório para o arquivo é um "link físico" para os blocos que contêm os dados desse arquivo, também é um identificador de arquivo aberto. Se não houver uma entrada de diretório e nenhum identificador de arquivo aberto, os blocos estarão livres para serem reutilizados. Isso significa que, mesmo que você não faça um desligamento normal (por exemplo, arrancar o cabo de alimentação), o arquivo ainda será excluído - foi "excluído" quando você executou rm, apenas seus blocos não estavam imediatamente disponíveis para reutilização. p>     

por 25.06.2011 / 13:13
-1

o kernel mantém uma cópia do inode do arquivo na memória bloqueado, de modo que os blocos de dados pertencentes a esse arquivo e o inode não possam ser liberados enquanto um processo tiver o arquivo aberto. Uma vez que o arquivo é definitivamente fechado (como acontece quando o sistema está sendo desligado e o processo é eliminado), todos os blocos e o inode são liberados para reutilização. Isso acontece antes que o sistema de arquivos possa ser desmontado (não pode ser desmontado se tiver arquivos abertos) e o sistema está desligado.

    
por 24.09.2014 / 19:51

Tags