据报道分区已满,但我无法“看到”任何罪魁祸首文件
所以这是交易:
– df
报告托管我/ home目录的分区的100%使用率(仅限那些)
– 使用du
(la baobab
或xdiskusage
)的工具报告说,过多的空间消耗显然与我的用户有关。
– 然而,使用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进入你的家并再次运行最后一个命令,在你注销和登录时注意要改变的东西。