1. 检查磁盘使用情况,定位大空间占用
在进行磁盘清理前,需先明确哪些分区或目录占用了大量空间。常用命令如下:
df -h
:查看各挂载点的磁盘使用率,重点关注“Use%”接近或达到100%的分区(如根分区/
),定位需要清理的分区。du -sh /* 2>/dev/null | sort -rh | head -10
:列出根目录下各子目录的大小(按降序排列),显示前10个最大占用者,快速定位大目录。du -ah --max-depth=1 | sort -rh | head -n 10
:查看当前目录及其直接子目录的大小,更精准地定位大文件夹。2. 清理系统日志文件
系统日志(主要存放在/var/log
目录)长期积累会占用大量空间,尤其是服务异常时会产生巨量日志。清理方法:
sudo journalctl --vacuum-time=7d
。truncate
命令将特定日志文件(如syslog
)内容截断为0,不删除文件句柄,命令:sudo truncate -s 0 /var/log/syslog
。/var/log
目录下过期的压缩日志文件(如.gz
、.old
后缀),命令:sudo rm -f /var/log/*.gz /var/log/*.old
。3. 清除包管理器缓存
包管理器(如APT、DNF)安装软件时会缓存.deb
(Debian/Ubuntu)或.rpm
(RHEL/CentOS)包文件,长期累积会占用可观空间。清理方法:
apt clean
命令清理APT缓存(删除/var/cache/apt/archives
目录下的所有.deb
文件);使用apt autoremove --purge
命令移除不再需要的依赖包和配置文件。dnf clean all
命令清理DNF缓存(删除/var/cache/dnf
目录下的所有缓存文件);使用dnf autoremove
命令移除无用依赖。4. 处理被进程占用但已删除的文件
当一个正在被进程写入的文件被删除后,其磁盘空间不会立即释放(直到进程关闭文件句柄),此时df
显示空间已满,但du
统计结果正常。解决方法:
lsof +L1
命令列出所有链接数为0(已删除)但仍被进程打开的文件,重点关注大文件。sudo systemctl restart nginx
);若需立即释放空间,可终止占用进程(kill -9 PID
,PID为lsof
输出中的进程号)。5. 清理临时文件
系统和用户产生的临时文件(如/tmp
、/var/tmp
目录)通常可安全清理,不会影响系统运行。清理方法:
/tmp
目录:/tmp
目录下的文件会在系统重启后自动清除,但可手动清理以释放空间,命令:sudo rm -rf /tmp/*
。/var/tmp
目录:/var/tmp
目录下的文件会持久化(除非手动删除),定期清理可释放空间,命令:sudo rm -rf /var/tmp/*
。6. 卸载无用软件包及旧内核
无用软件包和旧内核版本会占用大量磁盘空间,需定期清理:
apt autoremove
(Debian/Ubuntu)或dnf autoremove
(RHEL/CentOS)命令卸载不再需要的软件包及其依赖。dpkg --list | grep linux-image
列出所有已安装的内核,保留当前正在使用的内核(如linux-image-6.5.0-41-generic
),删除旧内核(如sudo apt purge linux-image-5.15.0-86-generic
);清理后运行sudo update-grub
更新引导器配置。rpm -q kernel
列出所有内核包,删除旧内核(如sudo yum remove kernel-3.10.0-1160.el7.x86_64
)。7. 清理Docker残留资源
若系统运行了Docker,未使用的镜像、容器、卷和网络会累积占用大量空间。清理方法:
docker system prune -a --volumes
命令删除所有未使用的镜像、容器、卷和网络(需确认不会影响正在运行的容器)。docker container prune
(清理停止的容器)和docker network prune
(清理未使用的网络)命令,更精准地释放空间。8. 使用图形化磁盘清理工具(可选)
若不熟悉命令行,可使用图形化工具简化清理流程:
注意事项:
/home
目录、数据库文件),避免误删导致数据丢失。