use*_*256 0 filesystems cp files null
我刚刚遇到的建议是,如果您想删除一个大文件并且一个进程打开了文件句柄,您应该将它复制到 /dev/null 并且它的大小将减少到零。
这是如何运作的?或者这甚至有效?
快速搜索后,我发现了相互矛盾的答案,从“是的,这完全有效”到“你的整个机器要爆炸了”。有人可以启发我吗?
我在这里找到了这个问题:https : //syedali.net/engineer-interview-questions/
你误读了建议,这个想法不是将大文件复制到/dev/null,这不会以任何方式影响它,如果空间可用,则将其放入缓存中。
cp bigfile /dev/null # useless
Run Code Online (Sandbox Code Playgroud)
建议不要删除文件然后复制/dev/null到它,因为它会保持原始 inode 不变并且只要进程打开该文件就不会释放任何磁盘空间。
建议是将文件内容替换为/dev/null1,鉴于/dev/null设计事实大小为零,这有效地将文件截断为零字节:
cp /dev/null bigfile # works
cat /dev/null > bigfile # works
Run Code Online (Sandbox Code Playgroud)
可能会注意到,如果您使用 shell 来运行这些命令,则无需使用/dev/null,简单的空重定向将具有相同的效果并且效率更高,cat /dev/null无论如何都是无操作的。
: > bigfile # better
> bigfile # even better if the shell used supports it
Run Code Online (Sandbox Code Playgroud)