常用的几个命令:
- du : 计算出单个文件或者文件夹的磁盘空间占用.(磁盘使用情况:du --max-depth=1 -h )
- df : 查看磁盘还剩下多少空间 (df -h )
- sort : 对文件行或者标准输出行记录排序后输出.
- head : 输出文件内容的前面部分.
1 | # du -a /var | sort -n -r | head -n 10 |
2 | $ du -hsx * | sort -rh | head -10 |
在Linux下如何让文件让按大小单位为M,G等易读格式,S size大小排序。
[root@localhost data]# ls -lhS
方法二:#du -h * | sort -n
[root@localhost data]# du -h * | sort -n
当然您也可以结合管道文件夹内最大的几个文件
[root@localhost data]# du -h * | sort -n|head
动态显示机器各端口的链接情况
看上面使用了du --max-depth=1 -h的命令来查找磁盘的使用情况,因为后面没有跟路径,它就默认是当前的路径。这个命令的-h参数是为了方便你读懂每个文件的大小,如果没有这个参数显示的文件大小就没有k,M,G等。执行命令后,前面n-1行的是该目录下每个文件夹的大小。最后一行显示的是该目录总的大小。
然后你会说不在乎该目录下每个文件的大小,你只想知道其中某一个文件(文件夹)的大小,那么有没有办法呢?当然你应该记得,我一直强调的,方法总比问题多,这儿也不例外。
请看下面的例子:
[root@localhost ~]# du -sh
7.5M . www.2cto.com
[root@localhost ~]#
聪明的你一定发现了这里显示的大小和上面最后一行的大小是一样的。这就是说这里显示的大小是该目录的总大小。
我知道你心里在冷笑,不是方法比问题多吗?这里说的也只有一个答案。当然,我不会让你失望的。另一个方法比较土,但是还是可以解决问题的。
[root@localhost ~]# du -h --max-depth=0
7.5M .
[root@localhost ~]#
我想告诉你的是man手册里面已经告诉了:--max-depth=0的功能和-s的功能是一样的。
当然你也可以通过sed打印最后du -h --max-depth=1一行来解决问题,但我并不推荐。
这里涉及到一个原则,尽量使用命令提供选项的原始功能。如果命令没有提供该功能,才需要我们自己使用grep,sed,awk来选取我们需要的行。
当然du命令后面可以跟文件路径,来查看指定路径的大小的。
[root@localhost ~]# du -sh /opt/oracle
5.6G /opt/oracle
特此: 如果我想要统计 磁盘的某个目录下占用最大的10个文件
命令:du --max-depth=1 -h |sort -n -r |head -n 10