Linux命令更新-du 和 df

命令简介


dudf 是 Linux 系统中常用的两个磁盘空间管理命令,用于查看磁盘的使用情况。

  • du (disk usage):用于显示文件和目录所占用的磁盘空间。

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

命令区别

命令功能作用范围
du显示文件或目录的大小文件或目录
df显示文件系统的磁盘使用情况文件系统

简单来说,du 是从文件角度去查看磁盘占用情况,而 df 是从文件系统角度去查看磁盘占用情况。

命令参数

du 命令常用参数
  • -h:以人类可读的格式显示大小,例如 1K、2.3M、4G。

  • -s:仅显示总计,只显示指定目录或文件的大小。

  • -a:显示目录中所有文件的大小。

  • -m:以 MB 为单位显示。

  • -k:以 KB 为单位显示。

  • –max-depth=N:指定递归的最大深度。

df 命令常用参数
  • -h:以人类可读的格式显示大小,例如 1K、2.3M、4G。

  • -k:以 KB 为单位显示。

  • -m:以 MB 为单位显示。

  • -T:显示文件系统的类型。

  • -i:显示 inode 信息。

命令用法示例

du 命令示例
  • 查看当前目录下所有文件和子目录的大小,并以人类可读的格式显示:```
    du -sh *

    
    
  • 查看 /var 目录的大小,并以 MB 为单位显示:```
    du -sm /var

    
    
  • 递归显示 /home 目录下所有文件和子目录的大小,并指定最大递归深度为 2:```
    du -h --max-depth=2 /home

    
    
    
df 命令示例
  • 查看所有文件系统的磁盘使用情况,并以人类可读的格式显示:```
    df -h

    
    
  • 查看 /boot 分区的使用情况,并显示文件系统类型:```
    df -hT /boot

    
    
    

运维示例

案例:查找占用空间最大的10个目录

  1. 使用 du 命令递归统计所有目录大小:
du -sh /*

  1. 将输出结果排序,并取前10行:
du -sh /* | sort -nr | head -n 10

案例:检查系统是否有磁盘空间不足的风险

  1. 使用 df 命令查看所有文件系统的使用情况:
df -h

  1. 过滤出使用率超过80%的文件系统:
df -h | awk '$5 >= "80%" {print $6}'

运维问题:dfdu 查询结果不一致分析与解决方案

问题根源

df -hdu -sh 两者虽然都用于查看磁盘使用情况,但其计算方式和统计范围存在差异:

  • df -h 从文件系统层面统计磁盘使用情况,包括文件数据、目录结构、元数据等。

  • du -sh 从文件层面统计磁盘使用情况,主要统计文件的大小,但不包括所有元数据。

因此,当出现结果不一致时,通常是以下因素导致:

  • 文件系统元数据: 包括 inode、目录条目、权限信息等,这些数据 df 会统计,而 du 通常不统计。

  • 特殊文件: 软链接、硬链接、设备文件、管道等特殊文件,其大小计算方式不同。

  • 文件系统碎片: 严重的磁盘碎片可能导致 dudf 计算结果的差异。

  • 未释放的资源: 已删除的文件被进程持有句柄、缓存数据未同步等情况。

  • 文件系统错误: 文件系统损坏可能导致统计不准确。

解决方案

  1. 检查文件系统元数据:
  • 使用 tune2fs 检查文件系统状态:```
    tune2fs -l /dev/sda1

    
    
  • 使用 fsck 检查并修复文件系统错误:```
    fsck -f /dev/sda1

    
    
  • 注意: fsck 操作可能导致数据丢失,请谨慎使用,建议在备份数据后进行。

  1. 检查特殊文件:
  • 使用 find 命令查找软链接和硬链接:```
    find /path/to/directory -type l
    find /path/to/directory -samefile 

    
    
  • 使用 ls -l 查看文件类型:```
    ls -l /path/to/file

    
    
    
  1. 检查未释放的资源:
  • 使用 lsof 查找持有已删除文件句柄的进程:```
    lsof | grep deleted

    
    
  • 终止相关进程:```
    kill -9 

    
    
  • 同步文件系统缓存:```
    sync

    
    
    
  1. 检查磁盘碎片:
  • 使用 fsck 命令检查磁盘碎片:```
    fsck -c /dev/sda1

    
    
  • 使用 e4fsdefrag 或其他工具进行碎片整理:```
    e4fsdefrag -f /dev/sda1

    
    
    
  1. 深入分析:
  • 使用 du -a 查看每个文件的大小: 逐一排查异常大的文件。

  • 使用 find 结合 xargs 进行批量处理:```
    find /path/to/directory -type f -size +1G -exec du -sh {} ;

    
    
  • 使用 tree 可视化目录结构: 帮助快速定位问题。

脚本自动化

#!/bin/bash

# 检查文件系统
tune2fs -l /dev/sda1
fsck -f /dev/sda1

# 检查未释放资源
lsof | grep deleted > /tmp/deleted_files.txt
if [ -s /tmp/deleted_files.txt ]; then
  echo "Found deleted files with open file descriptors:"
  cat /tmp/deleted_files.txt
fi

# 检查软链接和硬链接
find /path/to/directory -type l -print
find /path/to/directory -samefile <file> -print

# 检查磁盘碎片
e4fsdefrag -v /dev/sda1

# 其他检查和处理
# ...

注意事项

  • 备份数据: 在进行任何操作前,务必备份重要数据。

  • 谨慎操作: fscke4fsdefrag 等命令可能导致数据丢失,请谨慎使用。

  • 针对性处理: 根据具体情况选择合适的处理方案。

  • 定期检查: 将上述脚本集成到系统监控中,定期检查并处理。

总结

dudf 命令是 Linux 系统中非常重要的磁盘管理工具。通过灵活运用这两个命令,可以方便地查看磁盘使用情况,查找占用空间大的文件或目录,及时发现潜在的磁盘空间不足问题,从而更好地管理系统资源。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用"df -h"命令可以在Linux下查看磁盘空间的使用情况,其中"-h"选项表示以人类可读的方式显示磁盘空间的大小,以便更易于理解。该命令读取分区的超级块信息获取分区使用情况,输出结果包括每个分区的挂载点、总空间、已使用空间、剩余空间和使用率等信息。 而"du -s"命令用于查看指定文件或目录的磁盘使用空间。其中"-s"选项表示只显示总和,即只显示指定文件或目录的总大小,而不显示具体的文件大小。该命令输出结果以字节为单位,并且默认只显示最后一个级别的目录或文件的大小。 总结起来,"df -h"用于查看分区的整体磁盘空间使用情况,而"du -s"用于查看特定文件或目录的磁盘使用空间。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [df -h和du -sh显示的磁盘空间不一致分析](https://blog.csdn.net/weixin_28788593/article/details/116969248)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [一天一个shell命令 linux好管家-磁盘-du命令详解](https://download.csdn.net/download/weixin_38625448/14892833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

私有运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值