Linux磁盘占用分析指南

Linux磁盘占用分析指南

Linux磁盘占用分析指南

概述

在Linux系统中,分析磁盘占用情况是系统管理的重要任务。本指南将介绍多种快速分析当前文件夹磁盘占用情况的方法,从基础命令到高级技巧,帮助您高效地管理和优化磁盘空间。

基础命令

1. 使用 du 命令

du (disk usage) 是Linux中最常用的磁盘占用分析工具。

基本用法
# 查看当前目录下各子目录的磁盘占用(以KB为单位)du# 以人类可读格式显示(K、M、G)du-h# 只显示当前目录的总占用du-sh# 查看当前目录下所有子目录的大小,并按大小排序du-h --max-depth=1|sort-hr
常用参数
  • -h:以人类可读格式显示(K、M、G)
  • -s:只显示总计
  • --max-depth=N:限制显示深度
  • -a:显示所有文件和目录的大小
  • -c:显示总计
  • -t SIZE:只显示大于指定大小的文件/目录
实用示例
# 查看当前目录下最大的10个子目录du-h --max-depth=1|sort-hr|head-n10# 查找大于100MB的文件find.-type f -size +100M -execls-lh{}\;# 查看当前目录下各类型文件的总大小find.-type f -name"*.log"-execdu-ch{} + |grep total$ 

2. 使用 df 命令

df (disk free) 用于显示文件系统的磁盘空间使用情况。

# 显示所有挂载点的磁盘使用情况df-h# 显示特定目录所在的文件系统使用情况df-h.# 显示inode使用情况df-i

高级工具

1. ncdu 工具

ncdu (NCurses Disk Usage) 是一个交互式的磁盘使用分析工具。

安装
# Debian/Ubuntusudoapt-getinstall ncdu # CentOS/RHELsudo yum install ncdu # Fedorasudo dnf install ncdu 
使用
# 分析当前目录 ncdu # 分析指定目录 ncdu /path/to/directory # 不扫描子目录 ncdu --no-scan /path/to/directory 

2. gt5 工具

gt5 是另一个基于终端的磁盘使用分析工具,可以比较不同时间点的磁盘使用情况。

安装
# Debian/Ubuntusudoapt-getinstall gt5 
使用
# 分析当前目录 gt5 .# 比较两个时间点的磁盘使用情况 gt5 --old=/path/to/old/snapshot --new=/path/to/current/dir 

3. pydf 工具

pydfdf 命令的增强版,提供彩色输出和更友好的显示格式。

安装
# Debian/Ubuntusudoapt-getinstall pydf 
使用
# 使用彩色输出显示磁盘使用情况 pydf # 以人类可读格式显示 pydf -h

实用脚本和技巧

1. 查找大文件脚本

#!/bin/bash# 查找当前目录下最大的N个文件# 用法: ./find_large_files.sh [目录] [文件数量]DIRECTORY=${1:-.}FILE_COUNT=${2:-10}echo"在 $DIRECTORY 中查找最大的 $FILE_COUNT 个文件:"find$DIRECTORY-type f -execdu-h{} + |sort-hr|head-n$FILE_COUNT

2. 目录大小分析脚本

#!/bin/bash# 分析目录大小并生成报告# 用法: ./analyze_directory.sh [目录]DIRECTORY=${1:-.}REPORT_FILE="disk_usage_report_$(date +%Y%m%d_%H%M%S).txt"echo"磁盘使用分析报告">$REPORT_FILEecho"生成时间: $(date)">>$REPORT_FILEecho"分析目录: $DIRECTORY">>$REPORT_FILEecho"================================">>$REPORT_FILEecho-e"\n\n总磁盘使用情况:\n">>$REPORT_FILEdf-h>>$REPORT_FILEecho-e"\n\n目录大小分析 (前10个最大子目录):\n">>$REPORT_FILEdu-h --max-depth=1$DIRECTORY|sort-hr|head-n10>>$REPORT_FILEecho-e"\n\n大文件列表 (前20个):\n">>$REPORT_FILEfind$DIRECTORY-type f -execdu-h{} + |sort-hr|head-n20>>$REPORT_FILEecho"报告已保存到: $REPORT_FILE"

3. 磁盘使用监控脚本

#!/bin/bash# 监控磁盘使用情况,当使用率超过阈值时发送警告# 用法: ./monitor_disk_usage.sh [阈值百分比]THRESHOLD=${1:-80}df-h|grep-vE'^Filesystem|tmpfs|cdrom'|awk'{print $5 " " $1}'|whileread output;dousage=$(echo $output |awk'{print $1}'|sed's/%//g')partition=$(echo $output |awk'{print $2}')if[$usage-ge$THRESHOLD];thenecho"警告: 分区 $partition 使用率已达到 ${usage}% (超过阈值 ${THRESHOLD}%)"fidone

可视化工具

1. filelight

filelight 是KDE桌面环境下的磁盘使用可视化工具。

# 安装sudoapt-getinstall filelight # 使用 filelight 

2. baobab

baobab 是GNOME桌面环境下的磁盘使用分析工具。

# 安装sudoapt-getinstall baobab # 使用 baobab 

最佳实践

  1. 监控磁盘使用:设置监控脚本,当磁盘使用率超过阈值时发送警报
  2. 分析大文件:定期查找和分析大文件,确定是否可以删除或压缩
  3. 使用符号链接:对于占用大量空间的目录,考虑将其移动到其他分区并创建符号链接
  4. 压缩归档:对于不常访问的大文件,考虑压缩归档

定期清理:设置定期任务清理临时文件和日志

# 清理超过30天的日志文件find /var/log -type f -name"*.log"-mtime +30 -delete

常见问题解决

1. 磁盘空间不足但 du 显示占用很少

这通常是因为有文件被删除但进程仍在使用:

# 查找已删除但仍被进程占用的文件sudolsof|grep'(deleted)'# 重启相关服务释放空间sudo systemctl restart service_name 

2. du 命令运行缓慢

对于包含大量小文件的目录,du 可能会很慢:

# 使用 --apparent-size 选项加速(但可能不准确)du-h --apparent-size # 限制扫描深度du-h --max-depth=2

3. 权限问题导致的扫描不完整

# 使用sudo运行以获取完整结果sudodu-h /path/to/directory # 忽略权限错误du-h /path/to/directory 2>/dev/null 

总结

Linux提供了多种工具和方法来分析磁盘占用情况,从简单的命令行工具到图形化界面工具。选择合适的工具取决于具体需求和环境:

  • 对于快速检查,使用 du -h --max-depth=1 | sort -hr
  • 对于交互式分析,使用 ncdu
  • 对于可视化分析,使用 filelightbaobab
  • 对于自动化监控,编写脚本结合 dfdu 命令

通过合理使用这些工具和技巧,您可以有效地管理和优化Linux系统的磁盘空间。

Read more

【亮数据 × Dify】零代码秒搭 AI 实时爬虫,数据伸手就来!

【亮数据 × Dify】零代码秒搭 AI 实时爬虫,数据伸手就来!

主要演示了如何用亮数据(Bright Data)+ Dify 零代码搭建一个 AI 实时爬虫工具,实现自动抓取网页数据并生成分析报告。核心流程如下: ✅ 总结: 1. 工具介绍 * Dify:开源的大语言模型应用开发平台,支持无代码搭建 AI 应用。 * 亮数据(Bright Data):提供网页抓取服务,支持 API 调用。 2. 操作步骤 步骤内容1. 登录 Dify 云需科学上网,支持 GitHub / 谷歌 / 邮箱登录。2. 安装插件在 Dify 插件市场通过 GitHub 链接安装“亮数据”插件。3. 创建应用新建空白应用 → 选择“工作流”模式 → 命名项目。4. 配置工作流构建

使用 VS Code 连接 MySQL 数据库

使用 VS Code 连接 MySQL 数据库

文章目录 * 前言 * VS Code下载安装 * 如何在VS Code上连接MySQL数据库 * 1、打开扩展 * 2、安装MySQL插件 * 3、连接 * 导入和导出表结构和数据 前言 提示:这里可以添加本文要记录的大概内容: 听说VS Code不要钱,功能还和 Navicat 差不多,还能在上面打游戏 但是没安装插件是不行的 发现一个非常牛的博主 还有一个非常牛的大佬 提示:以下是本篇文章正文内容,下面案例可供参考 VS Code下载安装 VS Code下载安装 如何在VS Code上连接MySQL数据库 本篇分享是在已有VS Code这个软件的基础上,数据库举的例子是MySQL 1、打开扩展 2、安装MySQL插件 在搜索框搜索 MySQL和 MySQL Syntax,下载这三个插件 点击下面的插件,选择【install】安装

阿里云全品类 8 折券限时领,建站 / AI / 存储通用 立即领取