1. 快速定位大文件/目录
磁盘空间告急的首要任务是找出占用空间大的文件或目录,避免盲目清理。常用命令:
df -h:查看各分区磁盘使用情况,定位占用高的分区(如根分区/、/var等);du -sh * | sort -rh | head -n 10:列出当前目录下占用空间最大的前10个文件/目录;ncdu(交互式可视化工具):通过sudo apt install ncdu(Debian/Ubuntu)或sudo yum install ncdu(CentOS/RHEL)安装,扫描目录后可直观查看文件大小,支持键盘导航删除。2. 清理无用缓存与临时文件
缓存和临时文件是磁盘空间的“常驻客”,定期清理可快速释放空间:
sudo apt-get clean(清除所有已下载的软件包文件),CentOS/RHEL用sudo yum clean all(清除软件包缓存及旧头文件);sudo rm -rf /tmp/*(删除/tmp目录下所有临时文件,需确认无进程占用);rm -rf ~/.cache/*(清理当前用户的缓存文件,如浏览器缓存、应用临时文件)。3. 管理日志文件
日志文件(尤其是/var/log目录下的文件)可能无限增长,需通过轮转或删除旧日志控制大小:
sudo truncate -s 0 /var/log/syslog(清空syslog文件,保留文件但清空内容);sudo find /var/log -type f -name "*.log" -mtime +30 -delete(删除30天前的.log文件);logrotate工具(默认已安装),编辑/etc/logrotate.conf配置文件,设置日志保留天数(如maxage 30)或大小阈值(如size 100M),自动轮转旧日志。4. 处理旧内核与未使用软件
旧内核和未使用的软件会占用大量空间,需及时清理:
dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | grep -v $(uname -r) | grep -v $(uname -r | sed 's/-generic//') | head -n -2 | xargs sudo apt-get purge -y(保留当前内核及最新的1个旧内核,删除其余旧内核);rpm -qa kernel | grep -v $(uname -r) | xargs sudo yum remove -y(删除非当前运行的内核)。sudo apt-get autoremove(Debian/Ubuntu,删除不再需要的依赖包);sudo yum autoremove(CentOS/RHEL,同理)。5. 释放系统保留空间
Linux系统默认保留根分区5%的空间(用于系统恢复),可通过tune2fs调整(仅适用于ext3/ext4文件系统):
sudo tune2fs -m 1 /dev/sda1(将/dev/sda1分区的保留空间比例从5%调整为1%,释放4%的空间)。调整前需确认分区挂载状态(df -h查看),避免误操作。
6. 扩展磁盘空间(终极解决方案)
若清理后仍空间不足,需扩展磁盘容量:
fdisk /dev/sdb(假设新硬盘为sdb)分区,mkfs.ext4 /dev/sdb1格式化,mount /dev/sdb1 /mnt/newdisk挂载到指定目录;pvcreate(创建物理卷)、vgextend(扩展卷组)、lvextend(扩展逻辑卷)、resize2fs(调整文件系统大小)逐步扩展;7. 预防措施(避免再次告急)
crontab -e设置定时任务,如每周日凌晨3点执行清理脚本(0 3 * * 0 /path/to/cleanup_script.sh);Nagios、Zabbix或Prometheus等工具设置磁盘空间阈值(如85%),超过阈值时发送邮件或短信报警;/(根分区)、/var(日志、数据库)、/home(用户数据)分配足够空间,避免单个分区过度使用。