https://my.oschina.net/u/3113381/blog/5463932

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 是根据数字大小,而不是单位进行统计。还有生产环境删除大文件的一些操作套路。

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

  1. 009 Linux 文件大小统计与排序( du于df和sort)

    @ 目录 01 du 与 df 作用与区别? du(disk usage) df(disk free) 02 du 常用命令示例 03 sort 常用参数 04 常用组合 du + sort + he ...

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

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

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

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

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

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

  5. [Linux]常用命令之【du/fdisk/df/ls】#磁盘管理/文件管理#

    本文的经典应用场景: 1.查找占用磁盘存储空间最大的目录/文件 2.关于[磁盘分区]的相关概念和实操,详见另一博文:[Linux]磁盘分区 - 博客园/千千寰宇 1 fdisk fdisk := &q ...

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

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

  7. Linux文件大小 指令&编程

    在工作和日常的编程中时常需要确定文件的大小,一些基本的查看方式在此做一个总结. 一. linux shell环境下 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    ...

  8. Linux下统计出现次数最多的指定字段值

    假设桌面上有一个叫“data.txt”的文本,内容如下: {id='xxx' info='xxx' kk='xxx' target='111111' dd='xxx'}{id='xxx' info=' ...

  9. linux shell 脚本攻略学习8---md5校验,sort排序,uniq命令详解

    一.校验与核实 目前最为出名的校验技术是md5sum和sha1sum,它们对文件内容使用相应的算法来生成校验和. 举例: amosli@amosli-pc:~/learn$ md5sum text.t ...

  10. 【转帖】linux sort,uniq,cut,wc,tr,xargs命令详解

    linux sort,uniq,cut,wc,tr,xargs命令详解 http://embeddedlinux.org.cn/emb-linux/entry-level/201607/21-5550 ...

随机推荐

  1. 最新系统MacOs13 Ventura(M1/M2芯片) + Parallels Desktop 18(PD18史上最强虚拟机)永久使用攻略

    众神殿内,高朋满座,胜友如云,Vmware.VirtualBox.Utm等虚拟机大神群英荟萃,只见位于C位王座上的Parallels怅惘抬头,缓缓逡巡,睥睨群小,目光到处,无人敢抬头对视. 是的,如果 ...

  2. 一文带你从零认识什么是XLA

    摘要:简要介绍XLA的工作原理以及它在 Pytorch下的使用. 本文分享自华为云社区<XLA优化原理简介>,作者: 拓荒者01. 初识XLA XLA的全称是Accelerated Lin ...

  3. Axure 辅助线--栅格化布局

    全局辅助线 在所有页面都会显示,比如主页面是框架.子页面通过[内联框架]去加载,为了子页面的元件不偏移,可以创建创建全局辅助线 页面辅助线

  4. 玩转Python:用Python处理文档,5个必备的库,特别实用,附代码

    在Python中,有几个流行的库用于处理文档,包括解析.生成和操作文档内容.以下是一些常用的库及其简介和简单的代码示例: PyPDF2 - 用于处理PDF文件. 简介:PyPDF2是一个纯Python ...

  5. Kafka--简介,部署

    kafka官网:https://kafka.apache.org/documentation/ 本文kafka版本:3.1.0 一.简介 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消 ...

  6. LLVM 参考链接

    https://www.llvm.org/ LLVM Essentials(Paperback) LLVM 编译器 https://www.cs.cmu.edu/afs/cs.cmu.edu/acad ...

  7. 洛谷P2678:跳石头(贪心 + 二分)

    题目背景 一年一度的"跳石头"比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间 ...

  8. oracle开机自动重启

    数据库服务器如果由于某种原因重启了,oracle数据库是不会重新启动的,那么如何配置可以完成操作系统重启数据库服务器自动重启. 注:如下样例根据我的实际oracle安装路径写的,使用时根据实际安装路径 ...

  9. <vue 路由 3、路由代码跳转>

    说明:在上一节的工程下继续讲解 一.     知识点说明 业务开发中更多的是使用代码方式进行页面的跳转会用到this.$router.push('/') 和this.$router.replace(' ...

  10. VueRouter和ReactRouter路由对比

    https://blog.csdn.net/xinxin_csdn/article/details/124652160