为什么你的磁盘越清理越满?90%的人都踩过这个坑

admin 2026-04-16 05:26:09 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文针对Linux磁盘清理常见问题提出系统解决方案,通过六步法指导用户快速定位大文件、清理日志与缓存、处理未释放空间及Docker/临时文件。核心发现是删除正在写入的文件需用truncate而非rm避免空间未释放,并强调配置日志轮转等预防措施。 综合评分: 85 文章分类: 解决方案,安全运营,终端安全


cover_image

为什么你的磁盘越清理越满?90%的人都踩过这个坑

原创

刘军军 刘军军

运维星火燎原

2026年4月14日 00:00 山西

在小说阅读器读本章

去阅读

你是否遇到过:

  • 日志文件疯长占满磁盘
  • 不知道哪些大文件可以安全删除
  • 删了文件空间却没释放
  • 想清理又怕删错业务数据

今天就教你一套系统的Linux磁盘清理方法论,从快速定位大文件到安全清理,让你从容应对磁盘告警。


1. 核心干货(解决方案)

Step 1:快速定位大文件和目录

# 查看当前目录下最大的10个文件/目录
du -sh * | sort -rh | head -10

# 查找整个系统中大于100M的文件
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null

# 查找最近30天内修改过的大文件
find / -type f -size +50M -mtime -30 -exec ls -lh {} \; 2>/dev/null

# 查看磁盘挂载和使用情况
df -h

【此处建议插入:du命令输出结果截图】

Step 2:清理日志文件(最常见)

# 查看systemd日志占用
journalctl --disk-usage

# 清理systemd日志,只保留最近1周
journalctl --vacuum-time=1w

# 或者只保留500M
journalctl --vacuum-size=500M

# 清空普通日志文件(安全方式,不会删除文件)
> /var/log/nginx/access.log
> /var/log/messages

# 查找并清空所有 .log 文件
find /var/log -name "*.log" -exec truncate -s 0 {} \;

避坑指南:不要直接 rm -f 删除正在写入的日志文件,否则空间不会立即释放,应该用 > 或 truncate 清空。

Step 3:清理软件包缓存

# Ubuntu/Debian 清理
apt-get clean
apt-get autoremove --purge

# CentOS/RHEL 清理
yum clean all
dnf clean all

# 查看yum缓存大小
du -sh /var/cache/yum/

Step 4:清理已删除但未释放的文件

# 查看已删除但未释放的文件
lsof | grep deleted

# 如果看到很多,可以重启相关进程,或者用下面的命令强制释放
# 注意:只在确认安全的情况下使用
lsof | grep deleted | awk '{print $2}' | xargs -r kill -9

【此处建议插入:lsof命令输出示意图】

Step 5:清理Docker(如果使用)

# 查看Docker占用
docker system df

# 清理未使用的镜像、容器、网络
docker system prune -a

# 只清理停止的容器
docker container prune

# 只清理未使用的镜像
docker image prune -a

Step 6:查找临时文件

# 查看/tmp目录大小
du -sh /tmp

# 清理7天前的临时文件
find /tmp -type f -atime +7 -delete

# 清理/var/tmp
find /var/tmp -type f -atime +30 -delete

2. 方法论(总结)

口诀

磁盘清理五部曲:一看二查三清四放五预防

  • 一看df -h 看整体情况
  • 二查du + find 定位大文件
  • 三清:优先清理日志和缓存
  • 四放:检查已删未释放的文件
  • 五预防:配置日志轮转,从源头解决

底层逻辑

为什么删了文件空间没释放?因为Linux中文件被进程打开时,即使删除了文件名,inode还在被占用,只有进程关闭文件后空间才会真正释放。这就是为什么要用 lsof | grep deleted 来检查的原因。

磁盘管理不是事后救火,而是事前预防。

快速清理速查表

紧急清理(5分钟):
1. df -h                          # 确认满了
2. journalctl --vacuum-time=1w    # 清理日志
3. find /var/log -name "*.log" -exec truncate -s 0 {} \;  # 清空日志
4. lsof | grep deleted            # 检查未释放文件

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:运维星火燎原 刘军军 刘军军《为什么你的磁盘越清理越满?90%的人都踩过这个坑》

评论:0   参与:  0