关于后端:009-Linux-文件大小统计与排序-du于df和sort

29次阅读

共计 1882 个字符,预计需要花费 5 分钟才能阅读完成。

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 请关注!

正文完
 0