@

01 du 与 df 作用与区别?

Linux 最有用最常用的统计文件大小命令是什么?无疑就是 du 和 df 了。

du(disk usage)

du 能看到的文件只是一些当前存在的,没有被删除的。

df(disk free)

df 主要用于 Linux 系统上的文件系统磁盘使用情况统计。

当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失,而是暂时消失,当所有程序都不用时,才会根据 OS 的规则释放掉已经删除的文件,df 记录的是通过文件系统获取到的文件的大小,它比 du 强的地方就是能够看到已经删除的文件。

df 和 du 不一致情况就是是否可看到被删除的文件,这也是 df 统计可能比 du 统计大的原因。

02 du 常用命令示例

  • du -h # 显示当前目录下所有文件及目录(包含子目录下内容)大小,-h 会换算成 K、M、G 等人类易读结果;

  • du -b # 或-bytes 显示目录或文件大小时,以byte为单位;

  • du -k # 或--kilobytes,以1024 bytes为单位;

  • du -m #或--megabytes 以1MB为单位

  • du -a #  显示当前目录下所有文件所占空间(含隐藏文件,包含目录,文件,层级目录下文件);

  • du -s # 显示当前目录总大小(不会列出层级子目录);

  • du -s * # 显示当前目录下每个文件夹和文件的大小(最常用)

  • du -s [文件夹1] [或文件1] #  显示指定目录或文件大小;

  • du --max-depth=1 [目录] # 只显示指定目录下第一层目录(不单个含文件)的大小;

  • du --max-depth=2 [目录] # 只显示指定目录第一和二层目录(不含单个文件)的大小;

03 sort 常用参数

(sort 作用是将文件内容排序,以行为单位)

  • -n  # 依照数值的大小排序;
  • -r  # 以相反的顺序来排序;
  • -o <输出文件>  # 将排序后的结果存入制定的文件;
  • -b  # 忽略每行前面开始出的空格字符;
  • -c  # 检查文件是否已经按照顺序排序;
  • -f  # 排序时,将小写字母视为大写字母;
  • -m  # 将几个排序号的文件进行合并;

以下几个参数与 -n 排序方式互斥:

  • -i  # 排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
  • -d  # 排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
  • -M  # 将前面3个字母依照月份的缩写进行排序;

04 常用组合 du + sort + head

  • du -a /temp/logs  | sort -nr #  按照文件从大到小排序(含隐藏文件,包含目录,文件,层级目录下文件);
  • du -m --max-depth=1  /temp/logs  | sort -nr | head -n 10 # 指定目录第一层,显示前 Top10,-m: 统计单位为MB,为什么不用-h?sort 大小排序只看数字,不看单位,可能会导致 2G 反而排序在 200M 之后;(只显示指定目录下第一层目录(不单个含文件)的大小;)
  • du -m --max-depth=1   /temp/logs  | sort -nr -o 'sort.txt' | head -n 10 # 使用sort -o 参数将排序结果存入指定文件sort.txt 中。

05 如何删除文件,如大的日志文件?

通常使用 rm 命令删除文件以释放空间。但是我们无法删除文件是非常常见的,因为应用程序此时正在使用该文件,直接删除它们会产生有害影响,例如挂起应用程序,应用程序崩溃等。

方案一:

空字符串覆盖文件内容,是删除文件的一种优雅方式。

echo "" > info.log

方案二:

echo 不管用的特列情况,使用如下步骤。

  1. (1)du -sh * # 查看文件的使用情况;
  2. (2)du -h  --max-depth=1  [文件目录]| sort -nr # 查找占用磁盘的文件目录的大文件,删除日志(优雅使用 echo "" > xx.log),发现磁盘使用率仍未下降;
  3. (3)lsof | grep delete # 发现有文件句柄并未释放的大文件,导致磁盘使用率未下降,文件已经 deleted 了,但是进程还未结束,所以直接kill;
  4. (4)kill -9 [pid] # kill 这个进程(这个要根据线上实际情况来看是否可以被 kill,最好优雅关闭进程),最后查看 df -h 恢复正常。

06 小结

du 常用的组合命令是与sort、head一起使用,排序找出最大的那批文件。在遇到磁盘溢满问题的时,可以与 find 命令合用找出最大的那一批文件删掉。与 sort 排序统计时使用具体的-m、-k参数,而不是用-h,否则会导致统计不准确。因为 sort -n 是根据数字大小,而不是单位进行统计。还有生产环境删除大文件的一些操作套路。

「不甩锅的码农」原创,转载请注明来源,未经授权禁止商业用途!同名 GZH 请关注!

009 Linux 文件大小统计与排序( du于df和sort)的更多相关文章

  1. linux包之coreutils之du和df命令

    [root@localhost ~]# rpm -qf /usr/bin/ducoreutils-8.4-31.el6.x86_64[root@localhost ~]# rpm -qf /bin/d ...

  2. Linux学习(十三)du、df、fdisk磁盘分区

    一.du du命令是查看文件或者目录大小的命令. 一般使用du -sh 查看,不用-sh参数意义也不大,应为不用这个参数,它会把目录下的所有文件大小递归的显示出来,就像这样: 如果用-sh参数: [r ...

  3. linux下磁盘管理(du、df)命令使用

    DF :disk free 磁盘可用量 DU: disk usage 磁盘使用 df:列出文件系统的整体磁盘使用量: df参数: -a:列出所有的文件系统,包括系统特有的/proc等文件系统 -k:以 ...

  4. Linux的磁盘系统和文件系统显示的文件大小为什么不一样(du指令和ls指令的区别)

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  5. Linux,du、df统计的硬盘使用情况不一致问题

    [转]http://blog.linezing.com/?p=2136 Linux,du.df统计的硬盘使用情况不一致问题   在运维Linux服务器时,会碰到需要查看硬盘空间的情况,这时候,通常会使 ...

  6. 目录和文件 按创建时间排序du -h --time --max-depth=1 . |sort -r -t $'\t' -k 2 Linux查看文件夹大小,并按文件夹创建时间排序

    目录和文件 按创建时间排序 # du -h --time --max-depth=1 . |sort -r -t $'\t' -k 230M 2020-04-01 14:54 .28K 2020-04 ...

  7. linux du和df

    df.du和fdisk这三个常用命令:df用于检查文件系统磁盘占用情况,du检查磁盘空间占用情况,而fdisk用于磁盘分区. du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,d ...

  8. Linux命令(17)du 查看文件和目录磁盘使用情况

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...

  9. Linux磁盘空间分析及清理(df、du、rm)

    1.df磁盘空间查看 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点. [root@oms ~]# df -Th Filesystem Type Size Used Avail Use% M ...

随机推荐

  1. 【LeetCode】622. Design Circular Queue 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 用直的代替弯的 数组循环利用 日期 题目地址:htt ...

  2. iNeuOS工业互联网操作系统,矿山动态产量计量系统和铁路车辆识别系统应用场景案例

    目       录 1.      概述... 2 2.      平台演示... 2 3.      矿山动态产量计量系统... 2 4.      铁路车辆识别系统... 4 1.   概述 iN ...

  3. MCU变量加载过程

    前言 在开发mcu代码的时候经常会有些疑惑,变量是怎么在编译之后进入单片机的ram区的呢,特别是在使用keil开发的时候.后来在接触gcc编译器和自研的mcu后,终于明白了这个问题.实际上变量编译后被 ...

  4. static,final,volatile

    static  静态修饰关键字,可以修饰 变量,程序块,类的方法:[被 static 修饰的方法和属性只属于类不属于类的任何对象.] 当你定义一个static的变量的时候jvm会将将其分配在内存堆上, ...

  5. Intriguing Properties of Contrastive Losses

    目录 概 主要内容 广义对比损失 不同的先验 不同的权重比 Feature Suppression DigitOnImageNet dataset RandBit dataset 代码 [Chen T ...

  6. 替代RTD2166|CS5212直接Pin to pin兼容替代RTD2166|替代RTD2166方案

    RTD2166功能概述 RTD2166是一款DisplayPort端口到VGA转换器,成本较高,Capstone于2019年推出CS5212,直接Pin to pin兼容替代RTD2166,可用原RT ...

  7. 「物流跟踪管理系统」 · Java Swing + MySQL JDBC开发,美和易思结业考试机试试题

    目录 文档说明: 一.语言和环境 二.技术要求 三.功能要求 四.数据库设计 五.具体要求及推荐实现步骤 六.注意事项 实现代码: 一.数据库 二.Java Swing com.ynavc.Bean ...

  8. 编写Java程序,使用Swing事件处理机制实现用户登录和英雄信息显示

    返回本章节 返回作业目录 需求说明: 使用Swing事件处理机制实现用户登录和英雄信息显示 实现思路: 创建LoginView类,该类用于显示登录界面,为登录按钮添加ActionListener事件, ...

  9. Java:对一个对象序列化和反序列化的简单实现

    名词解释 序列化:将Java对象转化成字节的过程 反序列化:将字节转化成Java对象的过程 字节:1字节(byte)= 8bit,bit就是计算机认识的二进制 序列化的作用 Java对象是在Java虚 ...

  10. STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解)

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) 前面 ...