磁盘已满,如何调查哪些文件占用了大部分空间?
编辑
我发现大部分空间都是由mysql bin日志所取的:
/var/lib/mysql/jiaoyou-slow.log: 53M /var/lib/mysql/mysql-bin.000005: 68M /var/lib/mysql/mysql-bin.000003: 1.1G /var/lib/mysql/mysql-bin.000007: 34M /var/lib/mysql/mysql-bin.000004: 225M
这些文件是否安全删除?
像这样的东西应该为你做的伎俩:
find / -type f -size +20000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
这将查找大小超过20mbs的/ (root)下的任何文件。 您可能需要调整$ 9 / $ 5variables,但在大多数情况下您不需要。 如果你只是想看看你的默认日志文件夹,我还build议更改/到/var/log/ 。
如果你使用的是graphics化环境,你可以使用像磁盘使用分析器(也叫猴面包树) ,可以产生一个很好的戒指图,如下所示:
替代文字http://www.marzocca.net/linux/baobab/figures/baobab_fullscan.png
命令行仍然是你最好的武器,但我觉得非常方便。 这里有一些替代品。
使用logrotate(8)压缩和删除旧的日志文件是一个好主意,所以一些chatty守护进程不会填满整个磁盘。
编辑:另外,大多数日志将位于/ var / log。 一个简单的ls -lh会列出哪些变得太大了。
du命令,在命令行,会告诉你哪些目录/文件夹占据最多的空间。 你可以从中推断出最大的文件。
$ du -h /
-h告诉du以“人类可读的术语”列出大小:kb,Mb,Gb等等。
如果您以普通用户的身份尝试这种方式,则会看到有关您无权查看的目录的错误消息。
如果以root身份执行,则不应该有错误消息。
# du -h /
通过sort -npipe道输出,以便最后一行显示最大的目录(或反向sorting和使用头)。
# du -h | sort -n
另一种方法是使用find来指定“查找大于特定大小的文件”,但是这种方法需要一些练习来使其正确。
# find / -size +10M
将列出大于10M字节的文件
如果您有合理大小的分区,则应该在日志目录之外search大文件。 日志不太可能成为你的问题,平均系统很less达到200MB以上。
只要您不确定实际执行的操作,您应该避免删除日志。 如果日志文件突然消失,许多守护进程的反应会变得不稳定 – 结果可能是从无法运行的服务直到无法重新启动特殊的服务。
如果删除/ var / log / *下的文件(例如,以.gz结尾),则应该保存。 再一次,我怀疑这实际上是解决你的主要问题(例如硬盘太满)
前25个目录和/或文件:
du -m / | sort -rn | head -25
好吧,我骗了,看了一下DBA …. 🙂
https://dba.stackexchange.com/questions/41050/is-it-safe-to-delete-mysql-bin-files
(来自“RolandoMySQLDBA”和“Derek Downey”的前两个答案是相关且有见地的。)
这里有两种types的“日志文件”,不幸的是。 一个是应用到你的MySQL数据库的事务日志。 这些文件可以用来将MySQL从服务器同步到MySQL主服务器,或者还原数据库。 正如上面链接的顶部答案所示,您应该只使用MySQL命令(或元工具,如Percona Toolkit)来“清除”这些日志。
另一个文件'jaioyou-slow.log'可能只是一个慢查询日志,logging的查询花费的时间比定义的时间要长。 这是一个与典型的* NIX日志文件最为相似的日志文件,因此,如果需要可以截断(尽pipe显然会丢失该文件中的性能统计信息)。
您可以使用像“logrotate”这样的有用工具来处理这个(也是唯一的)文件,或者在紧急情况下,只需要:
$ echo "" > /var/log/jaioyou-slow.log
一些观察:
参考文献: