在Linux中查找已删除的打开文件的大小?

4
我知道在Linux中,已删除的打开文件仍然会留存在文件系统中并占用空间,但我想知道这些已删除的打开文件的大小。使用命令 sudo find /proc/[0-9]*/fd -ls | grep '(deleted)' 可以列出这些文件,但是它给出的是有关 proc 文件系统中 "虚拟符号链接" 的信息,而不是已删除的文件。是否有一种方法可以获取这些已删除文件的信息?

4
"stat -L path" 能够起作用吗?或者,使用 "lsof" 命令可能会给你所需的信息。 - janneb
2
-L标志是可能的最短答案。没有它的stat会给出错误的结果,"stat -L $file"是正确的。此外,node、python和golang中的stat函数也显示正确的大小。 - quant2016
1个回答

4
这将打印/proc/[pid]/fd/[fd]路径,它的符号链接目标以及实际文件的大小:
find /proc/[0-9]*/fd -lname '*(deleted)' \
    -printf '%p => %l\t' -exec stat -Lc '%s' {} \; 2>/dev/null

最初的回答:

可能有更聪明的方法来做它 ;-)


是的,看起来它可以做到。谢谢。 - Capt. Crunch
1
为了允许排序,先按大小查找相同的:find /proc/[0-9]/fd -lname '(deleted)' 2>/dev/null | perl -lne '($l = readlink) =~ s/ (deleted)$//; print -s, " $_ $l"' | sort -g - Pascal Pixel Rigaux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接