从家里删除文件,从 .local/share/Trash/files 中删除它们,系统不报告可用空间

从家里删除文件,从 .local/share/Trash/files 中删除它们,系统不报告可用空间

我正在运行 Crunchbang,这是一个带有 OpenBox WM 的 Debian 变体。我通过在 thunar 文件管理器中浏览并按 del 键删除了大量文件。他们从视野中消失。然后我转到 ~/.local/share/Trash/files/ 并在那里删除它们。但文件系统仍然不报告已释放的空间。

df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb5              61G   57G  371M 100% /

答案1

我曾经遇到过类似的问题,试图追踪根分区上占用空间的内容,但磁盘使用分析器 Baobab 没有报告。最后我在 root 用户的垃圾文件夹中找到了这些文件/root/.local/share/Trash。 Baobab 和其他实用程序不会显示这些文件的原因是因为我以非 root 用户身份运行它们,并且它们没有读取/root文件夹所需的权限。快速的 su 允许我输入必要的目录和rm *文件。

答案2

一个可能的原因是 ext2/3/4 和其他“Unix 文件系统”为 root 保留了一定的空间 - 我相信默认值为 5%。这样,即使系统报告文件系统已满并且拒绝让普通(非 root)用户写入任何内容,root 用户和 root 运行的进程仍然有操作的空间。

这对于某些文件系统来说非常有用 - 例如 / (root)、/var,如果您将所有内容都放在一个文件系统上...对于 /home 和 /usr 文件系统可能不太理想,它们可能应该具有较少的保留空间(也许只有 1% 或没有)。

无论如何,当诸如df报告“0 字节可用”和“100% 使用”之类的命令时,不包括这 5% 保留给 root!因此,当普通用户被阻止时,root 用户和以 root 身份运行的进程可能会继续写入 - 似乎将分区填充到 100% 以上。

这意味着磁盘并没有你想象的那么满……但这也意味着删除文件可能不会产生你想象的那么大的影响;只是因为您删除的某些文件是在 100% 完整限制以上写入的文件,因此之后不会显示df

因此,如果您的磁盘有效空间为 100GB,df则会显示为 95GB。然而,当您填满这 95GB 并df显示磁盘已满并且系统拒绝普通用户写入时,root 仍将被允许写入另外 5GB。如果您随后清理并删除 10GB 文件,df将忽略为 root 保留的 5GB,仅显示 5GB(而不是 10GB)已释放。所以我假设您已经使用了一些为 root 保留的空间,因此当您删除 7GB 时,只有 378MB 低于保留限制。

您可以用来tune2fs更改要为 root 保留多少空间 - 不过应该是一些(也许不超过 5%)。还有一些选项mke2fs允许您在首次创建文件系统(格式化分区)时设置要保留多少空间(以百分比或字节为单位)。当磁盘较小时,5% 更有意义 - 对于 500GB 以上的磁盘,5% 变得有点多。

答案3

您可以运行以下命令来查看每个目录占用了多少磁盘空间:

du -hc --max-depth=1

当您发现进入的目录大小奇怪时,运行此命令并删除不再需要的文件。

/如果没有发现任何有趣的东西,则在目录中运行命令。如果需要,发布输出。

您也可以使用 Bleachbit,尝试一下:漂白位

答案4

嗯,值得一试,所以我想我应该把它发布在这里:

# find /root/.local/share -name '*.trashinfo'

这些是令人讨厌的小动物。就我个人而言,当我okteta在控制台模式下启动(十六进制编辑器)并在kio_trash我的终端中充斥着大量有关cannot stat: ...消息的无用“信息”时,我遇到了它们,即无法找到文件(我很久以前就删除了)。 “解决方案”是它不断地查找$HOME/.local/share/Trash/info文件.trashinfo。当我彻底清理该info目录时,我的 Linux 机器上又恢复了平静。 :) 无论谁发明了这种废话,都应该被电击。

相关内容