news 2026/7/6 12:07:51

Linux 磁盘空间排查:5个常见目录与日志文件清理实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 磁盘空间排查:5个常见目录与日志文件清理实战

Linux 磁盘空间排查:5个常见目录与日志文件清理实战

服务器磁盘空间告急是运维工作中最常见的问题之一。当系统提示"No space left on device"时,如何快速定位并清理占用空间的文件成为关键。本文将聚焦Linux系统中5个最容易产生大文件的目录,提供针对性的排查方法和清理策略。

1. 快速定位磁盘空间问题的工具组合

在深入具体目录前,我们需要掌握几个基础命令组合,它们能帮助我们快速定位问题所在。

查看整体磁盘使用情况:

df -h

这个命令会显示所有挂载点的使用情况,-h参数让输出以人类可读的格式显示(GB/MB/KB)。

查找大目录的黄金组合:

du -h --max-depth=1 / | sort -hr | head -10

这个管道命令的执行流程:

  1. du计算根目录下各子目录大小
  2. sort按人类可读数值逆序排序
  3. head只显示前10个结果

查找大文件的利器:

find / -type f -size +500M -exec ls -lh {} + 2>/dev/null | sort -k5 -hr

这个命令会查找系统中所有大于500MB的文件,并按大小排序显示。2>/dev/null是为了屏蔽权限不足的报错信息。

2. /var/log:日志文件的聚集地

系统和服务日志默认存储在/var/log目录,这是磁盘空间问题的重灾区。以下是几个需要特别关注的日志文件:

日志文件描述常见问题
messages系统主日志长期运行可能体积庞大
secure安全相关日志高频认证会产生大量记录
journal/systemd日志目录默认不限制大小
nginx/Nginx访问日志高流量网站日志增长快
mysql/MySQL错误日志配置不当可能无限增长

journal日志清理:对于systemd系统的journal日志,可以使用以下命令:

# 查看当前日志占用空间 journalctl --disk-usage # 保留最近2天的日志 journalctl --vacuum-time=2d # 或者限制总大小不超过500MB journalctl --vacuum-size=500M

Nginx日志轮转配置示例:在/etc/logrotate.d/nginx中添加:

/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript }

3. /tmp:临时文件的温床

/tmp目录是系统和应用程序存放临时文件的地方,理论上重启后会自动清空,但在长期运行的服务器上可能积累大量文件。

安全清理/tmp的注意事项:

  • 不要直接rm -rf /tmp/*,可能影响正在运行的应用程序
  • 使用find命令清理旧文件更安全:
find /tmp -type f -atime +7 -delete

这个命令会删除7天内未被访问的文件。

特殊文件处理:

  • 对于socket文件等特殊类型,应先确认是否可以删除
  • 某些应用程序(如MySQL)可能在/tmp创建重要临时表

4. /var/lib/docker:容器存储的潜在风险

对于使用Docker的环境,/var/lib/docker是默认的存储位置,可能占用大量空间。

Docker空间清理命令:

# 查看Docker磁盘使用情况 docker system df # 清理无用资源 docker system prune -a --volumes # 清理特定容器的日志文件 truncate -s 0 $(docker inspect --format='{{.LogPath}}' 容器名)

关键目录说明:

  • overlay2/:容器分层文件系统
  • containers/:容器日志和元数据
  • volumes/:持久化卷数据

5. 用户目录和应用程序日志

除了系统目录,用户主目录和应用程序特定目录也经常是空间占用大户。

常见问题点:

  • .cache/:应用程序缓存
  • .npm/, .m2/:开发工具缓存
  • 应用程序日志目录(如Tomcat的logs/)

Tomcat日志清理脚本示例:

#!/bin/bash TOMCAT_LOG_DIR="/opt/tomcat/logs" MAX_SIZE="500M" # 清理catalina.out if [ -f "${TOMCAT_LOG_DIR}/catalina.out" ]; then size=$(du -m "${TOMCAT_LOG_DIR}/catalina.out" | cut -f1) if [ "$size" -gt "${MAX_SIZE/M/}" ]; then echo "清空catalina.out (当前大小: ${size}MB)" > "${TOMCAT_LOG_DIR}/catalina.out" fi fi # 删除30天前的日志文件 find "${TOMCAT_LOG_DIR}" -name "*.log" -mtime +30 -delete

6. 自动化清理策略

手动清理只是临时解决方案,建立自动化机制才能从根本上解决问题。

logrotate配置要点:

  • 为每个重要服务配置独立的日志轮转
  • 设置合理的保留周期和压缩选项
  • 考虑日志的监控和分析需求

cron定时任务示例:

# 每天凌晨清理临时文件 0 2 * * * find /tmp -type f -atime +7 -delete # 每周日清理Docker无用资源 0 3 * * 0 docker system prune -f # 每月1号检查大文件并发送报告 0 4 1 * * df -h > /var/log/disk-report.log && du -h --max-depth=1 / | sort -hr >> /var/log/disk-report.log

7. 预防优于治疗:监控与告警

建立完善的监控体系可以在问题发生前预警:

推荐监控指标:

  • 各分区使用率(超过80%告警)
  • 关键日志文件大小
  • inode使用情况(特别是小文件多的系统)

Prometheus监控示例:

- job_name: 'node_disk' static_configs: - targets: ['localhost:9100'] metrics_path: '/metrics'

结合Grafana可以创建直观的磁盘使用情况看板,及时发现潜在问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 12:06:22

Linux 文件批量重命名实战:rename 命令 5 种正则表达式模式详解

Linux 文件批量重命名实战:rename 命令 5 种正则表达式模式详解在 Linux 系统中,文件批量重命名是开发者、运维人员以及数据分析师日常工作中不可或缺的技能。面对成百上千的日志文件、图片资源或数据集,手动逐个修改文件名不仅效率低下&…

作者头像 李华
网站建设 2026/7/6 12:03:06

评估与调试:Agent 效果怎么衡量

评估与调试:Agent 效果怎么衡量Agent 比普通对话模型难评估得多,因为涉及多步推理、工具调用、长任务执行。这篇讲 Agent 的评估维度、评估方法、调试技巧,以及怎么定位和优化常见问题。大家好,我是黒漂技术佬。 普通大模型问答&a…

作者头像 李华
网站建设 2026/7/6 12:02:29

Windows 11 23H2 虚拟机性能优化:VMware Tools 17.0 配置与 3 项关键参数调整

Windows 11 23H2 虚拟机性能优化:VMware Tools 17.0 配置与 3 项关键参数调整对于需要在虚拟环境中运行 Windows 11 23H2 的开发者或技术爱好者来说,仅仅完成基础安装远远不够。本文将深入探讨如何通过 VMware Tools 17.0 的精细配置和三项核心参数调整&…

作者头像 李华
网站建设 2026/7/6 12:02:05

Windows 11/10 系统配置工具 msconfig 的5个高级调试功能实战

Windows系统配置工具msconfig的5个高级调试功能实战指南引言在Windows系统维护和故障排查领域,msconfig(Microsoft System Configuration)是一个被严重低估的强大工具。大多数用户仅用它来管理启动项,却不知其隐藏着多项专业级调试…

作者头像 李华
网站建设 2026/7/6 12:01:29

Nginx 1.20.1 生产环境平滑升级实战:CentOS 7 下 5 步修复 CVE-2021-23017

Nginx 1.20.1 生产环境平滑升级实战:CentOS 7 下 5 步修复 CVE-2021-23017当安全团队在凌晨三点打来紧急电话时,任何运维工程师的肾上腺素都会飙升。CVE-2021-23017 这个看似普通的漏洞编号背后,隐藏着能导致远程代码执行的致命威胁——攻击者…

作者头像 李华