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

### OmegaConf 配置管理简介 OmegaConf 是一个强大的 Python 库,用于处理复杂的配置文件。它支持多种数据结构(如字典、列表)以及 YAML 文件的解析和操作。以下是有关如何使用 OmegaConf 的详细介绍。 #### 创建配置对象 可以通过 `OmegaConf.create` 方法创建一个新的配置对象。该方法可以接受字典、YAML 字符串或其他兼容的数据结构作为输入[^1]。 ```python import omegaconf from omegaconf import OmegaConf config_dict = {"database": {"host": "localhost", "port": 6379}} config = OmegaConf.create(config_dict) print(OmegaConf.to_yaml(config)) # 将配置转换为 YAML 格式的字符串 ``` #### 加载外部 YAML 文件 如果需要加载外部 YAML 文件,可使用 `OmegaConf.load` 方法。这使得程序能够轻松读取并应用存储在磁盘上的配置文件。 ```python yaml_file_path = "./example_config.yaml" file_conf = OmegaConf.load(yaml_file_path) # 打印加载后的配置内容 print(file_conf.database.host) # 输出 'localhost' ``` #### 合并多个配置源 当存在多个配置来源时(如默认设置与命令行参数),可以使用 `OmegaConf.merge` 来无缝合并它们。此功能允许开发者优先级较高的配置覆盖较低级别的配置项。 ```python default_configs = OmegaConf.create({"model": {"type": "resnet50"}}) cli_args = OmegaConf.from_dotlist(["model.type=vgg16"]) merged_config = OmegaConf.merge(default_configs, cli_args) assert merged_config.model.type == "vgg16" # 命令行参数成功覆盖默认值 ``` #### 动态更新配置 除了静态定义外,还可以通过访问器动态修改现有配置中的字段。这种灵活性非常适合运行时调整某些超参数或环境变量。 ```python dynamic_update = file_conf.copy() dynamic_update.database.port = 8080 print(dynamic_update.database.port) # 输出新的端口号 8080 ``` #### 错误处理机制 为了防止非法赋值破坏整个系统的稳定性,OmegaConf 提供了严格的模式控制选项。启用严格模式后,任何未声明过的键都将引发异常提示用户修正错误。 ```python strict_mode_enabled = file_conf.copy() strict_mode_enabled.set_struct(True) # 开启只读保护状态 try: strict_mode_enabled.new_field = True # 此处会抛出 AttributeError 异常 except AttributeError as e: print(f"Catch expected error: {e}") ``` --- ### 总结 以上展示了 OmegaConf 在不同场景下的典型用法,包括但不限于初始化配置实、加载外部资源、融合多层设定逻辑以及实施安全防护措施等方面的功能特性。希望这些子能帮助快速掌握其核心概念和技术要点!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

私有运维

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

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

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

打赏作者

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

抵扣说明:

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

余额充值