Nginx 删除的文件仍在下载

Nginx 删除的文件仍在下载

设想:

  • 创建一个随机文件(本例中为 1024M)dd if=/dev/zero of=file bs=1M count=1024
  • 开始下载 ( curl src > /dev/null)
  • 从服务器上删除文件
  • Curl 仍在下载100%, 1024M

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

服务器有512MRAM 和SWAP,文件不可能全部读取到 RAM。因此,它一定是在某个时刻从磁盘读取的。但是,文件在下载过程中停止存在,那么 nginx 怎么还允许人们继续下载呢?

答案1

下载开始后,Web 服务器会打开源文件,直到所有数据发送完毕才会关闭。删除文件不会阻止打开该文件的进程读取和写入文件。只有进程关闭文件后,内核才会删除该文件。

答案2

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

相关内容