iTe*_*ech 0 linux filesystems debian nginx
我的网络服务运行nginx
并php
使用X-Accel-Redirect
标头向客户端传送文件,如果我使用rm /my/folder/*.*
它将如何处理客户端当前正在访问/下载的文件?
Jen*_*y D 11
当进程开始读取文件时,它会创建一个附加到文件所在 inode 的文件句柄。
当您删除文件时,您将删除从目录到 inode 的链接。该链接将被立即删除,因此其他进程将无法找到该文件。
但是,只要 inode 有活动的文件句柄,内容仍然可以从使用该文件句柄的进程访问。一旦所有具有该 inode 的文件句柄的活动进程都关闭了它们的文件句柄,文件所在的空间将被标记为空。
您可以将文件名视为一种符号链接。
/inodes/1234
,并将其符号链接到/myapp/myfile.txt
/myapp/myfile.txt
。真正发生的是您打开,/inodes/1234
因为那是实际文件。/myapp/myfile.txt
。原始文件/inodes/1234
仍然存在,步骤 2 中打开它的进程仍在读取/访问它。/myapp/myfile.txt
. 它不存在,因为您删除了符号链接。(/inodes/1234
当然,原版仍然存在!)/myapp/myfile.txt
. 操作系统创建文件/inodes/4711
并创建一个符号链接/myapp/myfile.txt
当然,它比那稍微复杂一些,但在这种情况下它是一个有用的模型。
顺便说一句,这也是对“为什么我的磁盘已满,即使我删除了这个巨大的日志文件并且没有其他东西占用空间”这个问题的答案——如果一个进程仍在读取或写入文件,你刚刚做了它是隐形的,你实际上并没有清除它。
归档时间: |
|
查看次数: |
359 次 |
最近记录: |