Um arquivo só é apagado no sistema de arquivos uma vez que todas as referências a ele desaparecem. Ambos os nomes e identificadores abertos contam como referências. Enquanto o arquivo estiver aberto em um programa, ele não será excluído, embora a maioria dos sistemas não permita que você recrie um nome para ele.
Os dados ainda estão na unidade, mas o arquivo está marcado como tendo uma contagem de links de 0. Se o sistema travar, o fsck na próxima reinicialização saberá que deve excluir os dados. Isso não leva a uma negação de serviço mais do que um arquivo não excluído.
Você não pode recriar um link para o arquivo em um sistema Linux padrão, até onde eu saiba (curto de ignorar o driver do sistema de arquivos com debugfs
ou métodos similares), mas você pode recuperar o conteúdo facilmente: cat /proc/12345/fd/42
onde 12345 é o ID do processo que tem o arquivo aberto e 42 é o número do descritor de arquivo.
Por meio do NFS, quando você exclui um arquivo que ainda está aberto em algum cliente, o servidor NFS renomeia o arquivo no servidor, mas não o exclui até que todos os clientes tenham liberado o arquivo. Na minha experiência, o novo nome é .nfs…
, embora eu não saiba se o nome é o mesmo em todas as implementações do NFS.