据报道分区已满,但我无法“看到”任何罪魁祸首文件

所以这是交易:

df报告托管我/ home目录的分区的100%使用率(仅限那些)

– 使用du (la baobabxdiskusage )的工具报告说,过多的空间消耗显然与我的用户有关。

– 然而,使用du似乎无法找到任何罪魁祸首的文件。 例如, xdiskusage显示我的配置文件占用> 260GB但实际上只有文件中数据量的一半(其余部分显示为空白空间)。

– 在CLI上运行du只显示我上面描述的内容:我的用户的〜/文件夹消耗的磁盘空间是其实际内容文件的两倍。

而我最喜欢的:

– 这似乎与正常运行时间相关,好像某个进程正在缓慢地用数据填充分区,直到驱动器已满。 当我重新启动 – 欺骗! 大量的自由空间。 是否有一个内省工具让我确定,例如,在任何给定时间写入磁盘的进程是什么?

有什么建议?

我不知道是什么原因导致你观察到的行为,但我可以想象它是如何发生的:

由于Unix文件系统的工作方式,应用程序可以打开文件,然后取消链接(即从其父目录中删除文件名条目) – 文件句柄仍然有效,尽管没有与之关联的文件名,应用程序仍然能够写入文件,因为句柄指向inode,而不是文件名。

这样的文件一直存在,直到应用程序关闭它。 我的理解是,这是为应用程序创建“私有”临时文件的常用方法。

要查找此类文件,请使用

 lsof +L 

它将显示每个打开文件的链接数(NLINK列) – 未链接的文件在那里有0。 以下是未链接文件的外观:

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME ... mysqld 1126 mysql 11u REG 8,1 0 0 33603687 /tmp/ibMlwWQA (deleted) 

好奇的部分是它如何随时间变化,然后在您退出时消失。 一分钟内有关于此的更多信息。

你如何运行du以一种方式来计算主目录中的隐藏文件? 例如,比较以下两个命令的输出,从您的主目录运行:

 (home)$ du -csxk * (home)$ du -csxk . 

“点”forms应该总是更大。 更大,你知道你的额外空间是隐藏文件。

再次从$ HOME尝试以下内容:

 (home)$ find . -maxdepth 1 -print0 | xargs -0 du -cskx --exclude .gvfs | sort -rn 

(我排除了.gvfs,因为这是gnome安装远程文件系统的地方。)

这应该返回所有目录的列表,包括隐藏的目录,按大小降序排序。 总线和你的家(。)应该在顶部,并且因为你做了一个总计,总线应该是你的家庭大小的两倍。

从这里,你可以开始钻进大型目录(我的.thunderbird dir很大)寻找罪魁祸首。

现在,关于时间相关的部分。 首先,让我们看看您是否可以在登录时看到尺寸发生变化:

 (home)$ watch -n 10 'find . -maxdepth 1 -print0 | xargs -0 du -csxk --exclude .gvfs | sort -rn' 

这将每10秒运行一次命令,因此您可以随时查看事情的变化。 接下来要做的是尝试查看存储在注销时返回。 建立第二个管理员用户(您需要sudo权限)并通过远程计算机或其他东西以该用户身份登录。 作为该用户,sudo to root,并cd进入你的家并再次运行最后一个命令,在你注销和登录时注意要改变的东西。