Linux磁盘空间告急这些方法帮你快速释放
1. 快速定位大文件/目录(定位问题根源)
要释放磁盘空间,首先需要明确哪些文件或目录占用了大量空间。常用命令如下:
df -h:查看各分区磁盘使用情况,定位占用率高的分区(如根分区/或/var);du -sh * | sort -rh | head -n 10:进入目标分区(如/var),列出当前目录下各子目录/文件的大小,按从大到小排序,显示前10项;ncdu工具:交互式可视化工具,更直观地浏览目录结构并排序文件大小(安装:sudo apt install ncdu,使用:sudo ncdu /path/to/search)。
2. 清理无用临时文件(快速释放小空间)
临时文件(如/tmp、/var/tmp)通常是无用的缓存或临时数据,清理后可快速释放空间:
- 清理系统临时目录:
sudo rm -rf /tmp/* /var/tmp/*(注意:重启后这些目录会自动重建,但需确保无正在运行的程序占用其中的文件)。
3. 清理包管理器缓存(释放软件包缓存)
包管理器(如APT、DNF)会缓存已下载的软件包(.deb、.rpm文件),长期积累会占用大量空间:
- Debian/Ubuntu(APT):
sudo apt clean(清理所有已下载的软件包)、sudo apt autoclean(仅清理过期的旧版本包)、sudo apt autoremove --purge(移除自动安装且不再需要的依赖); - CentOS/RHEL(YUM):
sudo yum clean all(清理所有缓存); - Fedora(DNF):
sudo dnf clean all(清理所有缓存)。
4. 管理日志文件(解决日志膨胀问题)
日志文件(如/var/log/syslog、/var/log/apache2/access.log)会随时间不断增长,是磁盘空间的主要占用者之一:
- 手动清理旧日志:
sudo find /var/log -name "*.log" -mtime +7 -delete(删除7天前的.log文件);sudo truncate -s 0 /var/log/syslog(清空syslog文件内容,不删除文件本身); - 自动日志轮转:使用
logrotate工具配置日志轮转策略(默认配置文件:/etc/logrotate.conf或/etc/logrotate.d/下的分应用配置),定期压缩、删除旧日志。
5. 处理被进程占用但已删除的大文件(释放“隐形”空间)
当一个文件被进程写入时,即使使用rm命令删除,其磁盘空间也不会立即释放(直到进程关闭文件句柄)。可通过以下步骤释放:
- 查找被占用的已删除文件:
sudo lsof | grep deleted(列出所有已删除但仍被进程占用的文件); - 重启相关进程:找到占用文件的进程ID(PID),使用
sudo systemctl restart < 进程名>或sudo kill -9 < PID>重启进程,释放空间。
6. 清理旧内核版本(释放/boot分区空间)
旧内核版本会占用/boot分区空间(尤其是频繁升级内核的系统),需定期清理:
- 查看已安装的内核版本:
dpkg --list | grep linux-image(Debian/Ubuntu)或rpm -qa kernel(CentOS/RHEL); - 删除旧内核:保留最新的2个内核版本(确保系统可启动),使用
sudo apt remove linux-image-< 版本号>(Debian/Ubuntu)或sudo yum remove kernel-< 版本号>(CentOS/RHEL)删除旧版本。
7. 卸载无用软件包及依赖(释放软件占用空间)
长期未使用的软件包及其依赖会占用大量空间,可通过以下命令卸载:
- Debian/Ubuntu(APT):
sudo apt autoremove --purge(移除自动安装且不再需要的依赖及软件包); - CentOS/RHEL(YUM):
sudo yum autoremove; - Fedora(DNF):
sudo dnf autoremove。
8. 压缩大文件/目录(减少空间占用)
对于无法删除的大文件(如数据库备份、视频文件),可使用压缩工具减少其占用空间:
- 使用
tar命令压缩:tar -czvf < 压缩文件名> .tar.gz < 文件或目录>(如tar -czvf large_file.tar.gz /path/to/large_file); - 使用
gzip命令压缩:gzip < 文件名>(如gzip large_file.log,生成large_file.log.gz,原文件会被删除)。
9. 清理Docker系统(释放容器/镜像占用空间)
若系统运行了Docker容器,其镜像、容器、卷等会占用大量空间,可通过以下命令清理:
- 全面清理未使用的Docker对象:
docker system prune -a(删除所有未使用的镜像、容器、网络、构建缓存,执行前需确认无重要数据); - 针对性清理:
docker builder prune(清理构建缓存)、docker volume prune(清理未使用的数据卷)、docker network prune(清理未使用的网络)。
10. 自动化清理(避免重复操作)
为避免频繁手动清理,可编写综合清理脚本并通过cron定时执行:
- 示例脚本(
cleanup.sh):#!/bin/bash echo "开始执行系统清理任务..." # 清理旧日志文件(7天前) sudo find /var/log -name "*.log" -mtime +7 -delete # 清理包管理器缓存(Debian/Ubuntu) sudo apt clean & & sudo apt autoclean # 清理临时文件 sudo rm -rf /tmp/* /var/tmp/* # 清理用户缓存 rm -rf ~/.cache/* # 清空回收站 rm -rf ~/.local/share/Trash/* echo "系统清理完成!当前磁盘使用情况:" df -h - 配置定时任务:使用
crontab -e添加以下行,设置每周日凌晨2点执行清理:0 2 * * 0 /path/to/cleanup.sh。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux磁盘空间告急这些方法帮你快速释放
本文地址: https://pptw.com/jishu/738967.html
