linux垃圾清理
起因是阿里云上面一台很穷的机器,大早上来看了下,搭在那服务器上面的grafana直接就登不上了,登服务器看了下日志,磁盘满了,因为就50G的空间,上面还有个influxdb占了大头,在重新申请扩充磁盘空间之前,只能先看看能删啥了。
Linux垃圾
坊间有句话:Linux不像windows,Linux没有垃圾。对这句话,只能笑笑。。
首先df -h
看一下哪个分区满了:
1 | [root@izuf633r5fhkmlfxl47zbkz log]# df -h |
可以看到/dev/vda1
分区基本已经使用100%了,这个分区是挂载在/
目录下,所以,需要清理的也就是/
目录下的垃圾。
进根目录,一层一层的看文件大小并按文件大小倒序排列:
1 | cd / |
找到最大的文件夹/文件,进入对应的文件夹,一层一层的筛选
基本上可以找到/var/log
这个文件夹,这个文件夹中有很大的日志文件,尤其是/var/log/messages
文件以及/var/log/journal
文件夹,这两个都是系统操作日志的记录,尤其是journal
文件夹,里面存的大量的日志,这台服务器的日志有4G,需要清理的就是这个文件夹了。
journalctl
linux继承unix,也有类似syslog的记录,linux有个journald的日志解决方案,说实话,我对linux底层不是非常了解,所以这个日志系统当前也没多少时间去深究,只能停留在使用上。
journald日志系统有个读取日志的工具:journalctl
,这个工具应该算是经常用到的一个,经常搭建环境时候出错需要:journalctl -xe
查看详细日志
关于journalctl
这个工具的详细介绍这边不说,提供官方地址,不行就直接--help
其中可以找到一个参数:--vacuum-size=, --vacuum-time=, --vacuum-files=
官方解释:
1 | Removes the oldest archived journal files until the disk space they use falls below the specified size (specified with the usual "K", "M", "G" and "T" suffixes), or all archived journal files contain no data older than the specified timespan (specified with the usual "s", "m", "h", "days", "months", "weeks" and "years" suffixes), or no more than the specified number of separate journal files remain. Note that running --vacuum-size= has only an indirect effect on the output shown by --disk-usage, as the latter includes active journal files, while the vacuuming operation only operates on archived journal files. Similarly, --vacuum-files= might not actually reduce the number of journal files to below the specified number, as it will not remove active journal files. |
这三个参数,可以帮助我们删除journald的日志
用法:journalctl --vacuum-size=1G
指定日志文件最大占据空间为1Gjournalctl --vacuum-time=1years
指定日志文件保存时间为1年
更多用法:
1 | #查看所有日志(默认情况下 ,只保存本次启动的日志) |
附上一篇关于systemd
命令介绍的博客:
完~