Nginx eliminou files ainda downloads

Cenário:

  • Crie um file random (1024M nesse caso) dd if=/dev/zero of=file bs=1M count=1024
  • Inicie o download ( curl src > /dev/null )
  • Exclua o file do server
  • Curl ainda baixa 100%, 1024M

Como isso é possível, se o file for excluído no server?

O server tem 512M RAM e nenhum SWAP, o file não pode ter sido lido tudo na RAM. Portanto, ele deve ter lido do disco em algum momento. No entanto, o file pairou no meio do download, então, como o nginx ainda permite que as pessoas continuem o download?

Uma vez que o download é iniciado, o server web abre o file de origem e não o fechairá até que todos os dados sejam enviados. A exclusão de um file não interromperá um process com o file aberto de leitura e gravação. Apenas uma vez que o process encerra o file será excluído pelo kernel.

Verdadeiro: as bases de dados (e o inode) são liberadas quando o linkcount obtém 0 E nenhum process possui o file aberto.