Linux命令du详解

目录

  • du是什么?
  • du 命令的格式
  • 常用的选项速查
  • 选项详解及例子
    • du [目录/文件]
    • -a
    • -d
    • -h
    • -s
    • -c
    • `--time`
      • +format
      • full-iso
      • long-iso
      • iso
    • `-t ` 或 `--threshold=SIZE `
    • `--exclude=PATTERN`
    • `--si`
    • `-0 `或`--null`
    • `--apparent-size`
    • `-B size` 或`--block-size=size`
    • `-b` 或`--bytes`
    • -k
    • -m
    • `-L` 或 `--dereference`
    • `-l` 或 `--count-links`
    • `-P` 或`--no-dereference`
    • `-S` 或`--separate-dirs`
    • `-D` 或`--dereference-args`
    • `--inodes`
    • `-X file` 或 `--exclude-from=file`
    • `-x --one-file-system`
    • `--total (-c) `
  • du 应用场景
  • du 和 sort
  • du --help
  • 总结
  • 参考

用于学习记录,以下内容为官方英文文档的翻译,网络文章,和例子。

du是什么?

duDisk Usage的缩写, Linux 上最受欢迎的命令之一,du 是统计目录或文件所占磁盘空间大小的命令
官方文档:http://www.gnu.org/software/coreutils/du

du 命令的格式

du [选项] [目录或文件名]

常用的选项速查

  • -a: 显示目录中所有文件以及文件夹大小
  • -h: 以 KbMbGb 等易读的单位显示大小
  • --si: 类似 -h 选项,但是计算是用 1000 为基数而不是1024
  • -s: 显示目录总大小
  • -d: 是 --max-depth=N 选项的简写,表示深入到第几层目录,超过指定层数目录则忽略
  • -c: 除了显示目录大小外,额外一行显示总占用量
  • --time: 显示每一个目录下最近修改文件的时间
  • -t: 是 --threshold=SIZE 的简写,过滤掉小于 SIZE 大小的文件以及目录
  • --exclude=PATTERN:过滤与PATTERN匹配的文件名或者目录名

选项详解及例子

du [目录/文件]

du 什么参数都不加的时候,默认显示当前目录下的目录及子目录大小;单位默认是 Kb
du [目录] 显示指定目录及其子目录大小,单位默认是 Kb
du [文件] 显示指定文件大小,单位默认是 Kb
注意:不加-a情况下,只显示目录的大小,不显示文件大小

这里的[目录] 可加可不加,加上,表示指定目录,不加表示当前目录.
如果没有参数,du 报告表示当前目录或当前目录下的文件所需的空间。通常,空间以 1024 字节为单位打印,但这可以被覆盖。非整数数量将向上舍入到下一个更高的单位。

如果两个或多个硬链接指向同一文件,则仅计算其中一个硬链接。文件参数顺序会影响对哪些链接进行计数,并且更改参数顺序可能会更改 du 输出的数字和条目。

-a

--all 的简称
du -a显示当前目录及子目录及所有文件的大小;单位默认是 Kb

-d

--max-depth=N 选项的简写,表示深入到第几层目录,超过指定层数目录则忽略
du -d 2 相当于du --max-depth=2

-h

--human-readable的简称
让文件大小显示成人类易读的方式,比如
du -a -h
显示的信息以K,M,G为单位

-s

显示目录总大小;不能和-a -d 组合使用,否则会报错
可以和-h组合使用
--summarize 的简称
在这里插入图片描述

-c

相当于 --total
处理完所有参数后,打印所有参数的总计。这可用于找出给定文件或目录集的总文件系统使用情况。
通过-c选项也能获取目录总大小,不过它先显示子目录大小,最后一行显示总大小,下面例子最后一行 total 字符串前面的 3.6M 表示 lint/ 目录的总大小;
而且与-s 不同的是,-c可以和-a -d组合使用。

--time

显示最近修改时间

--time=ctime
--time=status
--time=use

显示目录或其任何子目录中任何文件的最近状态更改时间戳 (ctime)。

--time=atime
--time=access

显示目录或其任何子目录中任何文件的最近访问时间戳 (atime)。

--time --time-syle=STYLE 

显示最近修改时间 并指定时间的输出格式,
其中 STYLE 表示日期的格式化输出字符串,和 date 命令的格式化输出的格式一样的

以样式 style 列出时间戳。仅当同时指定了--time选项时,此选项才有效。

样式应该是以下之一:

+format

使用 format 列出时间戳,其中 format 的解释类似于日期的格式参数。
例如,--time-style="+%Y-%m-%d %H:%M:%S"导致du列出类似“2020-07-21 23:45:56”的时间戳。与日期一样,格式的解释受 LC_TIME 语言环境类别的影响。

full-iso

使用类似ISO 8601的日期、时间和时区组件(纳秒精度)完整列出时间戳,
例如“2020-07-21 23:45:56.477817180 -0400”。这种风格相当于‘+%Y-%m-%d %H:%M:%S.%N %z’

long-iso

列出具有分钟精度的 ISO 8601 日期和时间组件,例如“2020-07-21 23:45”。这些时间戳比full-iso时间戳短,通常足以满足日常工作。这种风格相当于‘+%Y-%m-%d %H:%M’

iso

列出 ISO 8601 日期的时间戳,例如“2020-07-21”。这种风格相当于‘+%Y-%m-%d’。 您可以使用环境变量TIME_STYLE指定--time-style选项的默认值;如果未设置 TIME_STYLE,则默认样式为“long-iso”。为了与ls兼容,如果 TIME_STYLE“+”开头并包含换行符,则换行符和任何后续字符将被忽略;如果 TIME_STYLE“posix-”开头,则“posix-”将被忽略;如果 TIME_STYLE“locale”,则会被忽略。

-t --threshold=SIZE

过滤掉小于 SIZE 大小的文件以及目录; --threshold=SIZE 的缩写;
单位默认为byte; 即 如果-t 20 ,则表示过滤掉小于20 byte的数据,只打印大于20byte的数据;如果-t 3M 则表示过滤掉小于3M的数据,只打印小于3M的数据

根据给定大小排除条目。大小是指正常模式下使用的块,或与 --inodes 选项结合使用的 inode 计数。

如果size为正数,则 du 将仅打印大小大于或等于该值的条目。

如果 size 为负数,则 du 将仅打印大小小于或等于该值的条目。

虽然 GNU find 可用于查找特定大小的文件,但 du--threshold选项也可用于根据给定大小过滤目录。 当与 --apparent-size 选项结合使用时,--threshold 选项会根据表观大小删除条目。当与--inodes选项结合使用时,它会根据 inode 计数删除条目。

以下是如何使用--threshold查找大小大于或等于 200 MB 的目录:

du --threshold=200MB

以下是如何使用--threshold查找表观大小小于或等于 500 字节的目录和文件(注意 -a):

du -a -t -500 --apparent-size

以下是如何使用 --threshold 来查找根文件系统上的目录,并且在下面的目录树中使用了超过 20000 个 inode:

du --inodes -x --threshold=20000 /

--exclude=PATTERN

可以根据模式匹配,从而过滤掉匹配上的目录和文件。
递归时,跳过匹配模式的子目录或文件。例如,du --exclude='*.o' 排除名称以.o结尾的文件。

--si

为每个大小添加 SI 风格的缩写,例如“M”表示兆字节。使用 1000 的幂,而不是 1024; “M”代表 1,000,000 字节。该选项相当于--block-size=si。如果您更喜欢 1024 的幂,请使用-h --human-readable选项。

-0 --null

-0
--null
在每行末尾输出一个零字节 (ASCII NUL),而不是换行符。此选项使其他程序能够解析输出,即使该输出包含带有嵌入换行符的数据。

--apparent-size

Print apparent sizes, rather than file system usage. The apparent size of a file is the number of bytes reported by wc -c on regular files, or more generally, ls -l --block-size=1 or stat --format=%s. For example, a file containing the word ‘zoo’ with no newline would, of course, have an apparent size of 3. Such a small file may require anywhere from 0 to 16 KiB or more of file system space, depending on the type and configuration of the file system on which the file resides. However, a sparse file created with this command:
dd bs=1 seek=2GiB if=/dev/null of=big 

以下内容为机翻,建议直接看英文版原文解释

打印表观大小,而不是文件系统使用情况。文件的表观大小是 wc -c 对常规文件报告的字节数,或更一般地说,是 ls -l --block-size=1stat --format=%s。例如,包含单词zoo”且没有换行符的文件的表观大小当然为 3。如此小的文件可能需要 0 到 16 KiB 或更多的文件系统空间,具体取决于类型和文件所在的文件系统的配置。但是,使用此命令创建的稀疏文件: dd bs=1寻求=2GiB if=/dev/null of=big 表观大小为 2 GiB,但在大多数现代文件系统上,它实际上几乎不使用任何空间。 表观大小仅对常规文件和符号链接有意义。其他文件类型不会影响表观大小。

-B size--block-size=size

在打印之前按尺寸缩放尺寸。例如,-BG 以 1,073,741,824 字节为单位打印大小。
按照指定的size为单位 打印出大小;单位为byte。
在这里插入图片描述

-b--bytes

--apparent-size --block-size=1效果一致
在这里插入图片描述

-k

以 1024 字节块为单位打印大小,覆盖默认块大小。该选项相当于--block-size=1K

-m

以 1,048,576 字节块为单位打印大小,覆盖默认块大小。该选项相当于--block-size=1M

-L--dereference

取消引用符号链接(显示链接指向的文件或目录使用的文件系统空间,而不是链接使用的空间)。

-l--count-links

计算所有文件的大小,即使它们已经出现(作为硬链接)。

-P--no-dereference

对于 du 遇到的每个符号链接,请考虑符号链接本身使用的文件系统空间。

-S--separate-dirs

通常,在 du 的输出中(不使用 --summarize 时),目录名称 d 旁边列出的大小表示 d 下面的所有条目的大小总和以及 d 本身的大小。使用--separate-dirs时,为目录名称 d 报告的大小将排除任何子目录的大小。

-D--dereference-args

或者 -H
取消引用作为命令行参数的符号链接。不影响其他符号链接。这有助于找出目录的文件系统使用情况,例如 /usr/tmp,这些目录通常是符号链接。

--inodes

列出 inode 使用信息而不是块使用信息。此选项对于查找包含许多文件的目录非常有用,因此会占用文件系统的大部分 inode 空间。它可以很好地与选项 -a、-c、-h、-l、-s、-S、-t 和 -x 结合使用;但是,传递有关块大小的其他选项(例如 -b、-m 和 --apparent-size)将被忽略。

-X file--exclude-from=file

--exclude 类似,但采用从文件中排除的模式(每行一个)。如果文件为“-”,则从标准输入中获取模式。

-x --one-file-system

跳过与正在处理的参数所在的文件系统不同的文件系统上的目录。
--files0-from=file
禁止处理命令行上命名的文件,而是处理文件 file 中命名的文件;每个名称均以零字节 (ASCII NUL) 结尾。当文件名列表太长以至于可能超出命令行长度限制时,这非常有用。在这种情况下,通过 xargs 运行 du 是不可取的,因为它将列表分成几部分,并为每个子列表而不是整个列表使用

--total (-c)

选项进行 du 打印。生成ASCII NUL终止文件名列表的一种方法是使用 GNU find,使用其-print0谓词。如果文件为“-”,则从标准输入读取以 ASCII NUL 结尾的文件名。

du 应用场景

当磁盘空间满的时候,排查出占用大的文件和目录,进行针对性的清理工作。

du 和 sort

组合使用排查 磁盘占用大的文件

du -c -h lint/ -d 2 -t 21 | sort -hr | head -n 2

du --help

在这里插入图片描述
在这里插入图片描述

总结

du 命令通常被系统管理员用作自动监控和通知程序的补充,有助于防止关键目录和分区变满。已满或几乎已满的目录和分区会导致系统变慢,阻止用户登录,甚至导致系统崩溃。

由于 du 依赖于操作系统报告的信息,因此其输出可能无法反映底层设备中消耗的空间。

例如:

操作系统通常不会报告重复或备份块、纠错位等消耗的设备空间。这导致du低估了实际使用的设备空间。

在使用写时复制的文件系统中,如果两个不同的文件共享空间,du 的输出通常会计算重写所有文件的非空洞时将消耗的空间,而不是当前消耗的空间。

在使用压缩的文件系统中,操作系统可能会报告未压缩的空间。 (如果它确实报告了压缩空间,则该报告可能会在仅覆盖现有文件数据后发生变化。)

网络文件系统历来难以将准确的文件系统信息从服务器传输到客户端。

由于这些原因,du 最好被视为对一组文件的 tar 或其他常规备份的大小的估计,而不是作为底层设备中消耗的空间的度量。 退出状态为零表示成功,非零值表示失败。

参考

https://www.php.cn/faq/491002.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/472917.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++类和对象基础

目录 类的认识 访问限定符:public(公有),protected(保护),private(私有)。 类的两种定义方式: 类的实例化: 封装: 类的对象大小的计算: 类成员函数的this指针: C语言是面向过程的语言&am…

洛谷_P1605 迷宫_python写法

P1605 迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) dfs代码: 这道题也是简单的深搜问题,但是要注意地图的原点记得要初始化maps[sx-1][sy-1] 1 n, m, t map(int,input().split()) sx, sy, fx, fy map(int,input().split()) maps [[0 for _ i…

Java反射:深入解析与实战应用

在Java编程的世界中,反射机制是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。通过反射,我们可以实现许多高级功能,如动态代理、框架设计等。本文将深入探讨Java反射的基本概念、使用方法以及在实际项…

APP稳定性测试工具:Monkey

一、Monkey 简介 Monkey 是一款 app 的自动化测试工具,monkey 是猴子的意思,所以从原理上说,它的自动化测试就类似猴子一样在软件上乱敲按键,猴子什么都不懂,就爱捣乱。Monkey 原理也是类似,通过向系统发送…

多模态大语言模型的 (R) 演变:调查

目录 1. Introduction2. 赋予LLMs多模态能力2.1 大型语言模型2.2 视觉编码器2.3 视觉到语言适配器2.4 多模式训练 3. 使用 MLLM 处理视觉任务 连接文本和视觉模式在生成智能中起着至关重要的作用。因此,受大型语言模型成功的启发,大量研究工作致力于多模…

Jmeter接口测试步骤

一、使用工具测试 1、使用Jmeter对接口测试 首先我们说一下为什么用Posman测试后我们还要用Jmeter做接口测试,在用posman测试时候会发现的是一个接口一个接口的测试,我们每次测试成功后的数据,在工具中是无法保存的,再次测试的时…

STM32CubeMX学习笔记23---FreeRTOS(任务的挂起与恢复)

1、硬件设置 本实验通过freertos创建两个任务来分别控制LED2和LED3的亮灭,需要用到的硬件资源 LED2和LED3指示灯串口 2、STM32CubeMX设置 根据上一章的步骤创建两个任务:STM32CubeMX学习笔记22---FreeRTOS(任务创建和删除)-CS…

递归方法解决树的遍历问题

二叉树的最大深度 描述:给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 递归法(自顶向下) 通过递归法,左右子树同时向下递归遍历,直到遍…

大数据开发--02.环境准备

一.准备三台linux虚拟机 1.分别取名node1,node2,node3 2.配置静态ip 这里以node1为例,配置静态ip地址,其他node2.node3一样 配置完成之后别忘记 systemctl restart network 3.在各自的/etc/hosts文件中编辑三个Ip地址 三台都要配置, 4.然…

【百度灵境矩阵实训营】操作指南

【百度灵境矩阵实训营】操作指南 写在最前面提交注意事项比赛参与指南1、创建智能体作品要求 2、提交作品 学习资料包 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅&…

Java SE入门及基础(44)

目录 I / O流(上) 1. 什么是I / O流 过程分析 I / O的来源 Java 中的 I / O流 2. 字节流 OutputStream 常用方法 文件输出流 FileOutputStream 构造方法 示例 InputStream 常用方法 文件输入流 FileInputStream 构造方法 示例 综合练习 字节流应用场景 Java SE文…

LC串联谐振拓扑仿真建模及控制策略分析

直流高压电源主要应用于高端精密分析仪器、高端医疗分析仪器、静电应用、激光雷达、核探测、惯性导航、雷达通信、电子对抗、高功率脉冲、等离子体推进等行业领域。 LC串联谐振拓扑是直流高压电源中最为常用的拓扑结构。上一期内容中我们对 LC 串联谐振变换器的工作原理进行了…

Pytest单元测试框架 —— Pytest+Allure+Jenkins的应用

一、简介 pytestallurejenkins进行接口测试、生成测试报告、结合jenkins进行集成。 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高 allure-pytest是python的一个第三方…

看似封装,其实不止于封装?

本文介绍的也不只是封装,包含零零散散的知识点。其中,主要介绍封装、包和访问限定符、static、代码块等 提示:使用PC端观看,效果更佳! 目录 一、封装 1.为什么要封装 2.怎么封装 3.怎么访问被封装的数据 4.封装…

必知必会干货!Python正则表达式常用函数

1.正则表达式 正则表达式:是一个特殊的字符序列,计算机科学的一个概念,主要用来检索/替换哪些符合某个模式的文本 在python中使用正则表达式,主要是借助re模块来实现 ​特点 灵活性/功能性/逻辑性非常强 可以使用极其简单的方法…

【NTN 卫星通信】 车辆物联网设备通过NTN和TN切换的应用场景

1 场景描述 对于有两个3GPP无线接入网服务的大面积农田和农场,物联网设备可以通过NTN和TN接入网同时受益于5G系统的双转向数据连接能力。   在这个用例中,我们有一个广域的农业自动化应用系统来控制农业车辆,例如,一个装有数百个…

二分查找算法(1)

算法介绍 二分查找适用范围不止是有序数组,很多有“二段性”的数组其实都可以使用二分查找,什么是“二段性”呢?在数组中,我们查到某个数不符合条件后,就可以排除它之前或之后的所有数据,这种性质就叫做“…

【Linux】盘点广义层面上【三种最基本的进程状态】

前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…

119.设计链表(力扣)

代码解决 class MyLinkedList { public:// 定义链表节点结构体struct LinkedNode {int val;LinkedNode* next;LinkedNode(int val):val(val), next(nullptr){}};MyLinkedList() {dummyhead new LinkedNode(0);size0;}int get(int index) {if (index > (size - 1) || index…

分布式文件存储与数据缓存(二)| Redis

目录 Redis概述_什么是NoSQLNoSQL的四大分类KV型NoSql(代表----Redis)列式NoSql(代表----HBase)文档型NoSql(代表----MongoDB)搜索型NoSql(代表----ElasticSearch) 关系型数据库和非…