目录
一、需求
二、解决方法
1、解决思路
2、组合命令
3、du命令
三、实例演示和命令解释
1、实例演示
(1)查看当前路径下文件和目录
(2)命令效果展示
2、命令解释
(1). du -cks
(2). | 符号
(3). sort -rn
(4). | 符号
(5). head -n 20
四、扩展
一、需求
在Linux系统维护中,要经常检查是否有分区使用率(Use%)过高(比如超过85%), 如发现某个分区空间接近用尽,这样会导致系统出现性能问题,访问变慢,影响正常的业务,这时需要管理员快速解决这个问题。
二、解决方法
1、解决思路
若出现分区空间接近用尽,可以进入该分区的挂载点,用du命令组合,找出占用磁盘空间最多的一些文件或目录,若没有用处,可以删除或者备份到其他介质。
若发现某个目录空间占用很大,但是不想删除这个目录,可以进入这个路径下,再使用du组合命令,找到这个路径下占用磁盘空间最多的一些文件或目录,然后判断若没有用处,可以删除或者备份到其他介质。
2、组合命令
考虑使用du、sork结合head,形成组合命令,实现需求,如下:
du -cks * | sort -rn | head -n 20
先使用 `du` 命令获取当前目录下所有文件和目录的大小,然后使用 `sort` 命令按大小降序排序,最后使用 `head` 命令显示前20个最大的文件或目录。这样,你就可以很容易地找到哪些文件或目录占用了最多的磁盘空间,然后有选择的进行删除和备份。
3、du命令
若想进一步的了解du命令的用法,可以看我以前的一篇文章:
这个命令组合linux命令du解释和使用:用于估算和显示文件和目录在磁盘上使用的空间的命令 (地址: https://blog.csdn.net/weixin_70208651/article/details/136980138)
若想看更详细的du命令的介绍,可以在linux系统中输入如下命令:
man du
会出现如下图示:
三、实例演示和命令解释
1、实例演示
(1)查看当前路径下文件和目录
[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]# ll
total 362392
drwxr-xr-x 2 mysql mysql 4096 Jan 7 2022 bin
-rw-r--r-- 1 mysql mysql 17987 Dec 21 2018 COPYING
drwxr-xr-x 8 mysql mysql 4096 Mar 22 22:31 data
drwxr-xr-x 2 mysql mysql 4096 Jan 7 2022 docs
drwxr-xr-x 3 mysql mysql 4096 Jan 7 2022 include
drwxr-xr-x 5 mysql mysql 4096 Jan 7 2022 lib
drwxr-xr-x 2 mysql mysql 4096 Jan 7 2022 log
drwxr-xr-x 4 mysql mysql 4096 Jan 7 2022 man
drwxr-xr-x 9 mysql mysql 4096 Apr 27 2022 mysql-5.7.29-linux-glibc2.12-x86_64
-rw-r--r-- 1 mysql mysql 371015832 Mar 26 22:19 mysql.err
-rw-r--r-- 1 mysql mysql 2478 Dec 21 2018 README
drwxr-xr-x 28 mysql mysql 4096 Jan 7 2022 share
drwxr-xr-x 2 mysql mysql 4096 Jan 7 2022 support-files
[root@ecs-52a1 mysql]#
(2)命令效果展示
在centos 8.2 系统中,使用组合命令,出现如下结果:
[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]# du -cks * | sort -rn | head -n 20
5899436 total
2586700 mysql-5.7.29-linux-glibc2.12-x86_64
1331000 bin
1223984 lib
382424 data
362328 mysql.err
6656 log
4244 share
1244 include
784 man
28 support-files
20 docs
20 COPYING
4 README
[root@ecs-52a1 mysql]#
[root@ecs-52a1 mysql]#
2、命令解释
本命令的作用是在Unix或Linux系统中查找当前目录下占用空间最大的前20个文件或目录。详细解释如下:
(1). du -cks
* `du`: 这是一个用于估计和显示文件和目录在磁盘上的使用情况的命令。
* `-c`: 这个选项表示“总计”,它会显示所有文件和目录的总计大小。
* `-k`: 这个选项表示以KB(千字节)为单位显示大小。
* `-s`: 这个选项表示“汇总”,它会显示指定目录的总计大小,而不是显示每个子目录和文件的大小。注意:在您的原始命令中并没有 `-s` 选项,但如果要查找当前目录下每个文件或目录的大小,应使用 `du -ck *` 而不是 `du -cks *`。如果确实想要每个子目录和文件的大小并汇总,那么 `-s` 选项应该只用于目录,如 `du -cks ./*`。
* `*`: 这是一个通配符,代表当前目录下的所有文件和目录。
(2). | 符号
* 这是一个管道符号,它用于将一个命令的输出作为另一个命令的输入。在这里,`du` 命令的输出(即文件和目录的大小)被传递给 `sort` 命令。
(3). sort -rn
* `sort`: 这是一个排序命令。
* `-r`: 这个选项表示“逆序”或“降序”排序,即最大的值会排在最前面。
* `-n`: 这个选项表示按数值排序,这对于大小这样的数字值是很有用的。
(4). | 符号
* 又一个管道符号,这次是将 `sort` 命令的输出传递给 `head` 命令。
(5). head -n 20
* `head`: 这是一个显示文件开头部分的命令。
* `-n 20`: 这个选项表示只显示前20行。在这里,它会显示按大小降序排序后的前20个文件或目录。
四、扩展
在实际使用中,你可稍微做些修改,就可以适合您的应用了。比如,文件都比较大,按照kbyte显示可读性不好,可以改为Mbyte来显示,你可以用如下命令即可:
du -cms * | sort -rn | head -n 20
若目录下文件太多,你想看更多的文件,比如40个文件,可以用如下命令即可:
du -cms * | sort -rn | head -n 40
文章正下方可以看到我的联系方式。
鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎随时沟通。