Nginx删除的文件仍然下载

场景:

  • 创build一个随机文件(在这种情况下为1024M) dd if=/dev/zero of=file bs=1M count=1024
  • 启动下载( curl src > /dev/null
  • 从服务器上删除文件
  • curl仍然下载100%, 1024M

如果文件在服务器上删除,这怎么可能?

服务器有512M RAM, 没有 SWAP,文件不能全部读到RAM。 因此,它必须在某个时候从磁盘读取。 但是,文件在下载过程中已经停止了,那么nginx怎么还让人继续下载呢?

一旦下载开始,networking服务器将打开源文件,直到发送完所有数据后才会closures它。 删除一个文件不会停止读取和写入文件的进程。 只有当进程closures时,内核才会删除文件。

True:当linkcount变为0时,数据块(和inode)被释放,并且没有进程打开文件。