我删除了一个大约200GB大的文件,但看起来仍然因为某种原因保留了空间。我尝试用我发现的一堆命令清除它,但对我来说没有任何作用(对于保存在缓存中的文件,因为它们仍然被某些应用程序打开)。我也重启过很多次,但没有任何效果。
父文件夹仍然具有原始大小,但子文件夹的大小似乎都是正确的。
我希望有人知道为什么它仍然被保留或者我如何摆脱它。
du
输出:
# du -sh /home/vincent/
200G /home/vincent/
# du -bsh /home/vincent/*
14K /home/vincent/Desktop
8.2G /home/vincent/Documents
3.8G /home/vincent/Downloads
11K /home/vincent/java_error_in_PHPSTORM_3425.log
1.8K /home/vincent/java_error_in_PHPSTORM_6837.log
1.8K /home/vincent/java_error_in_WEBIDE_3683.log
4.0K /home/vincent/Music
0 /home/vincent/myCA.key
4.0K /home/vincent/Pictures
39 /home/vincent/PlayOnLinux's virtual drives
8.0K /home/vincent/Postman
4.0K /home/vincent/Public
4.0K /home/vincent/Templates
4.0K /home/vincent/Videos
[转录自截屏.]
答案1
如果您没有重新启动:您可能应该使用:
lsof -a +L1
可以帮助您找出哪些已删除(rm'd)文件仍然打开了“文件句柄”(即,某些程序仍然指向它,因此文件本身还没有被删除从文件系统中删除,即使其姓氏条目已被 rm 删除)。偏移量将暗示其中最大的文件。如果您看到一个似乎符合要求的应用程序:您应该干净地杀死(不是杀死-9 pid,尝试只杀死pid)相应的应用程序,它应该释放该文件句柄,并且应该回收该文件。但是您声明您已重新启动:您可能在主目录下的某个位置隐藏了文件。您可以尝试:
find /home/vincent/ -size +1G -ls
查看/home/vincent目录下大于1G的文件请注意:您对
*
du 的调用,即du ... *
只会对不以 a 开头的文件执行 du.
(*
将由您的 shell 扩展到所有不以 a 开头的文件和目录.
)。所以它不会在/home/vincent的“隐藏文件”上运行。我上面给出的 printf 应该忽略这一点(除非您对它们有特定的附加权限限制)并探索显示和隐藏的目录和文件。您还可以以 root 身份重新运行 find,方法是在其前面添加 sudo,并查看以 root 身份启动时是否会显示更多内容:sudo find /home/vincent/ -size +1G -ls
最后,如果您使用最新的图形界面进行删除:您可能需要清空“垃圾桶”才能真正释放空间。 (垃圾箱可以作为“.something”目录存在于您的主目录下,解释为什么您的家仍然那么大,以及为什么您
du ... *
没有看到它)
答案2
使用此命令行查找文件(它搜索并打印大小大于 180GiB 的文件的名称):
$ find /home/vincent -size +180G
这可能会返回多个文件。
然后你可以删除它。它可能位于垃圾文件夹内。
答案3
空间未填满的最可能原因是您有一个打开的文件句柄。仅当没有任何东西使文件保持打开状态时,才会释放空间。因此,重新启动该文件所属的应用程序,该空间可能会变得可用。
运行lsof
以查看打开的文件。有一篇关于删除未释放空间的文件的帖子
您还可以nothing
在删除文件之前写入该文件。例如,> /path/to/file
或注意从文件开头写入的echo "" >/path/to/file
单个文件,而不是将 ( ) 附加到文件末尾。>
>>