最近,更新完ubuntu后系统提示空间不足,于是寻找解决的办法,发现占据大部分空间的是日志。
一、查看磁盘空间
df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 3.9G 0 3.9G 0% /dev
tmpfs 799M 3.0M 796M 1% /run
/dev/vda1 40G 38G 2G 95% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 799M 0 799M 0% /run/user/0
cd /
du -sh *
发现/var占据了最大空间
再通过 du -sh * 检查/var目录之下的占用空间
发现大部分占用的空间都在/var/lib/gdm3目录和/var/log目录下,/var/log中/var/log/syslog系统日志占据了很多空间。
使用du -sh *发现/var/lib目录下的gdm3有19G,但进入gdm3再输入du -sh *只发现了一个16K的文件。
通过
lsof |grep -i deleted
搜索进程后没有发现已被删除但占用内存的进程,判断有隐藏文件。
输入
du -sh .
显示有19G的空间,通过
du -ach * #这个能看到当前目录下的所有文件占用磁盘大小和总大小
du -sh #查看当前目录总大小
du -sh * #查看所有子目录大小
三个命令发现/var/lib/gdm3/.local/share/xorg目录下有许多.log和.log.old日志文件。
二、日志清理
1、清理日志的5种方式
- 第一种:
cat /dev/null > filename
- 第二种:
: > filename
- 第三种:
> filename
- 第四种:
echo "" > filename
- 第五种:
echo > filename
2、清理当前目录下所有日志
for i in `find . -name "*.log"`;
do cat /dev/null >$i;
done
3、清理所有日志(简单粗暴,不建议)
find /var -type f -exec rm -v {} \;
注意最后的分号也是必须命令的一部分
4、清理无用的包
sudo apt-get autoclean 清理旧版本的软件缓存
sudo apt-get clean 清理所有软件缓存
sudo apt-get autoremove 删除系统不再使用的孤立软件
5、清理journal日志
1、用echo命令,将空字符串内容重定向到指定文件中
echo "" > system.journal
说明:此方法只会清空一次,一段时间后还要再次手动清空很麻烦,这里可以用以下命令让journalctl 自动维护空间
2、journalctl 命令自动维护文件大小
1)只保留近一周的日志
journalctl --vacuum-time=1w
2)只保留500MB的日志
journalctl --vacuum-size=500M
3)直接删除 /var/log/journal/ 目录下的日志文件
rm -rf /var/log/journal/f9d400c5e1e8c3a8209e990d887d4ac1
三、定时清理日志(无)
如更新日志速度过快,应设置定时清理日志,暂不设。
四、参考链接
https://zhidao.baidu.com/question/1767388306598984100.html
https://blog.csdn.net/lizhengnanhua/article/details/46446453