在使用Linux服务器过程中,经常会遇到磁盘空间不足的问题,好多应用默认安装在根目录下,记录一下如何找到问题所在,清理根目录(/)
1. 检查空间使用情况
1.1 查看分区占用:
Bash
df -h
输出:
Bash
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 33G 5.3G 86% /
/dev/vdb1 500G 274G 227G 55% /home
1.2 检查根目录占用:
Bash
sudo du -sh /* 2>/dev/null | sort -rh
du
: disk usage,显示磁盘使用情况
-s
: summary,只显示总计
-h
: human-readable,以人类可读的格式显示(GB、MB等)
/*
: 根目录下所有文件
sort -rh
:
-r
: reverse,降序排列-h
: human-readable,考虑单位进行排序
2>/dev/null
表示将错误输出(stderr)重定向到空设备,即忽略错误信息
- 在运行命令过程中,某些进程已经结束,就会导致/proc部分文件不存在而报错,加了这个命令,可以让输出看起来清爽一点
输出:
Bash
21G /var
12G /usr
470M /opt
179M /boot
41M /etc
4.9M /root
904K /run
312K /dev
208K /tmp
16K /lost+found
4.0K /srv
4.0K /mnt
4.0K /media
0 /sys
0 /sbin
0 /proc
0 /lib64
0 /lib
0 /bin
2. 重点目录分析与清理
根据输出的信息,可以看到/var
和/usr
占用空间最大,需要重点关注一下
2.1 分析/var
首先查看/var下具体哪些目录占用较大
Bash
sudo du -sh /var/* | sort -rh
看到两个占用空间比较大的目录
Bash
(base) -bash-4.2$ sudo du -sh /var/* | sort -rh
18G /var/lib
2.0G /var/log
如果想继续看/var/lib
里面是哪些内容,同理输入如下命令
Bash
# 查看详细内容
sudo du -sh /var/lib/* | sort -rh
docker占用最多:
Bash
(base) -bash-4.2$ sudo du -sh /var/lib/* | sort -rh
18G /var/lib/docker
这时候就可以考虑移动docker的安装位置
/var/log
常见的可以清理的内容:
Bash
# 清理旧的日志文件
sudo find /var/log -type f -name "*.gz" -delete
sudo find /var/log -type f -name "*.old" -delete
# 清理软件包缓存(如果是 CentOS/RHEL)
sudo yum clean all
# 清理临时文件
sudo rm -rf /var/tmp/*
# Docker相关(如果使用 Docker)
docker system prune -a # 清理未使用的容器、镜像等
2.2 分析/usr
首先查看详细占用
Bash
sudo du -sh /usr/* | sort -rh
找到两个占用空间比较大的目录
Bash
(base) -bash-4.2$ sudo du -sh /usr/* | sort -rh
7.6G /usr/local
1.6G /usr/lib
/usr/local
主要存放用户自己编译安装的软件,可以查看已经安装的软件:
Bash
sudo du -sh /usr/lib/* | sort -rh
可以从以下几个方向清理:
- 检查并卸载不再使用的软件
- 删除软件的源码包和编译临时文件
- 保留必要的可执行文件和库文件
/usr/lib
是系统文件目录,请谨慎清理
3. 安全建议
- 清理前先用
du
命令确认具体是哪些内容占用空间 - 不要随意删除不熟悉的系统文件
- 重要操作前最好先备份
- 每次清理后用
df -h
确认空间变化