Linux系统清理释放磁盘空间的常用方法
在清理前,需先定位占用空间最多的分区或目录。使用df -h命令查看各挂载点的磁盘使用详情(如根分区/的使用率),再用du -ah --max-depth=1 | sort -rh | head -n 10命令列出当前目录下最大的10个文件/目录,快速识别空间占用大户。
包管理器(如APT、YUM)安装软件时会保留下载的安装包缓存,长期积累会占用大量空间。
sudo apt clean(清除所有缓存包)和sudo apt autoclean(仅清除旧缓存包);sudo dnf clean all(清除所有缓存)或sudo yum clean all(旧版本)。sudo apt autoremove(Debian/Ubuntu)或sudo dnf autoremove(RHEL/CentOS)自动删除不再需要的依赖包;dpkg --list | grep linux-image列出所有内核,再用sudo apt purge linux-image-<旧版本号>删除;rpm -q kernel列出内核,再用sudo yum remove kernel-<旧版本号>删除。sudo update-grub更新引导器配置。/tmp(重启后自动清理)和/var/tmp(持久化临时文件)中,运行sudo rm -rf /tmp/*和sudo rm -rf /var/tmp/*安全清理;/var/log目录下的日志文件(如*.log)会随时间增长,可通过sudo journalctl --vacuum-time=7d保留最近7天的日志,或手动删除旧日志(如sudo rm /var/log/*.log)。使用find命令批量查找并删除大文件:
find . -type f -size +100M;find /path/to/directory -type f -size +1G -exec rm -fv {} +(替换/path/to/directory为目标路径)。若系统运行Docker,未使用的镜像、容器、卷会累积占用空间。运行docker system prune -a --volumes命令清理所有未使用的资源(包括镜像、容器、卷、网络);若仅需清理停止的容器和未使用的网络,可运行docker container prune && docker network prune。
某些进程可能仍在使用已被删除的文件(如日志文件),导致磁盘空间未释放。通过lsof | grep deleted命令查找被删除但仍被进程占用的文件,记下相关进程的PID,若可重启服务则重启对应服务;若需立即释放空间,可终止该进程(kill -9 PID,替换为实际PID)。
系统缓存(页面缓存、目录项缓存、inode缓存)会占用内存,但Linux内核会自动管理。若需手动清理(如调试或测试),可按以下步骤操作:
sync(将未写入磁盘的缓存数据写入磁盘);echo 3 | sudo tee /proc/sys/vm/drop_caches(清除页面缓存、目录项缓存、inode缓存)。