Files

將大文件 cp 到 /dev/null 以將大小減小到零

  • August 22, 2016

我剛剛遇到一個建議,如果你想刪除一個大文件並且一個程序打開了文件句柄,你應該將它複製到 /dev/null 並且它的大小將減少到零。

這是如何運作的?或者這甚至有效嗎?

快速搜尋後,我發現了從“是的,這完全有效”到“你的整個機器要爆炸”的相互矛盾的答案。有人可以啟發我嗎?

我在這裡找到了問題: https ://syedali.net/engineer-interview-questions/

您誤讀了該建議,其想法是不要將大文件複製到/dev/null,這不會以任何方式影響它,如果有可用空間則將其放入記憶體中。

cp bigfile /dev/null # useless

建議不要刪除文件然後復製/dev/null到它,因為它會保持原始 inode 不變,並且只要程序打開該文件就不會釋放任何磁碟空間。

建議是將文件內容替換為/dev/null1,考慮到/dev/null設計大小為零的事實,它實際上將文件截斷為零字節:

cp /dev/null bigfile # works

cat /dev/null > bigfile # works

可能需要注意的是,如果您使用 shell 執行這些命令,則無需使用/dev/null,簡單的空重定向將具有相同的效果並且效率更高,cat /dev/null無論如何都是無操作的。

: > bigfile # better

> bigfile  # even better if the shell used supports it

引用自:https://unix.stackexchange.com/questions/305017