如果您正在寻找解决方案,请参阅编辑#3。
我正在运行 Xubuntu 16.04 LTS,我有一个 ~40 GB 的根分区,根据系统监视器(以 root 身份)显示,该分区已 100% 满。它肯定是满了,因为许多程序无法正常运行。
但是,出于某种原因,我似乎无法弄清楚是什么在使用空间!Baobab(以 root 身份)仅报告我的根分区上总共使用了 15.5 GB!
编辑:另外,这是 /var - 人们说它很大。Baobab 仅报告 /var 有 1 GB,而 /var/log 是空的。我试过运行,sudo rm -R /var/log
但没有任何效果。
那么,我该如何找出正在使用我的磁盘空间的内容,以及如何防止它填满我的根分区?这是一个大问题,请帮忙!提前谢谢您 :)
编辑2:正如在答案部分所发布的,sudo lsof / | awk '{if(\$7 > 1048576) print \$7/1048576 \"MB\" \" \" \$9 }' | sort -n -u
返回11222.7MB /var/log/kern.log 11222.9MB /var/log/syslog
,但是,我似乎无法弄清楚如何删除这些文件,此外,我想弄清楚如何永久防止这些文件变得这么大。这个答案另一个问题建议我查看日志并查看其中的内容,因此理想情况下,我希望以某种方式读取这些神秘文件的内容。
编辑 3:我通过将 /var/log 安装在单独的分区上暂时解决了此问题。
但是,仍然有某种错误导致此问题。如果您希望修复此错误,请将信息(或至少引起注意)提供给错误报告:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1643719和https://bugzilla.kernel.org/show_bug.cgi?id=188331谢谢 :)
答案1
有两种类型的文件访问会占用磁盘空间,但不会显示在您的工具中:已删除(但仍打开)的文件和正在写入的文件。
我定义了这两个别名,我发现它们非常有用:
# from http://www.certpal.com/blogs/2010/12/find-open-files-in-linux-using-lsof/
alias bigopenfiles="sudo lsof / | awk '{if(\$7 > 1048576) print \$7/1048576 \"MB\" \" \" \$9 }' | sort -n -u"
alias deletedfiles="sudo lsof / | egrep 'PID|\(deleted\)'"
答案2
你的 /var 非常大。检查 /var/log
您可以使用此命令来查找大文件:
sudo find /var -xdev -type f -size +500000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
当然你可以调整大小(本例中为 500000k)
之后,你可以删除或压缩它们
答案3
您可能无法使用工具查看它,因为该文件已打开。请以 root 身份尝试此操作
> /var/log/syslog
确实,包括>
。这将截断日志。
笔记:
- 这将会删除日志!
答案4
正如 @waltinator 所说这里如果您发现删除的 syslog 文件在删除后仍然占用更多空间,并且无法使用rm -R /var/log
或释放它> /var/log/syslog
,请终止 Syslog 守护进程,(在 Elementary OS(Ubuntu 18.04)中,我killall rsyslogd
释放了打开的文件并释放了大约 15Gb 的 / 空间)
如果有的话,最好将 /var 挂载在单独的分区中。