首页 游戏资讯 正文

快速学习linux查看硬盘使用情况的正确姿势!

说起来,之前对Linux服务器那点儿硬盘空间,真是两眼一抹黑。服务器跑着跑着,有时候突然就发邮件过来,说你磁盘快满了,或者直接卡死了。那时候我心里就慌了,不知道咋办,只能凭着印象,或者问问同事,像个无头苍蝇似的。

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.icu

第一次上手,有点懵

我记得我刚接触服务器那会儿,有个师傅给我说了个命令,叫df。他跟我说这玩意能看硬盘空间,但我一敲回车,屏幕上唰唰出来一堆东西,什么/dev/sda1/dev/mapper/centos-root,后面跟着一串数字,什么1K-blocksUsedAvailable。我当时一看,头都大了,完全看不懂。感觉就像把一堆天书扔我面前,根本不知道从何看起。

摸索中发现新大陆:-h 参数

后来我实在是被逼急了,服务器又满了,影响了业务。我就自己上手,在网上瞎折腾,搜来搜去,才发现原来df这命令后面还能加个-h的参数。我抱着试试看的心态,敲了个df -h。这一回车,屏幕上的内容立马变得亲切多了!

  • 所有的数字都变成了带单位的,什么GM,一下就能看明白。
  • 哪个分区用了多少,还剩多少,一目了然。
  • 就跟你在Windows下看C盘D盘一样,一下子就看懂了。

我当时心里就想,这玩意儿终于能看懂我的硬盘到底是个什么情况了。我赶紧把这个命令记在了小本本上,想着以后再遇到硬盘报警,起码能先看看是不是真的满了,而不是一上来就瞎猜。

新的困扰:到底是谁占了地儿?

但是,光知道哪个盘满了,还不够。有时候我发现根目录或者某个挂载点满了,可我不知道是哪个文件夹占用了大部分空间。这就好像我发现家里进贼了,但不知道贼躲在哪间屋子里。我总不能把整个硬盘都删一遍?

那会儿我还是抓瞎,想找个方法能像个探照灯似的,把最大的那些个“吃空间大户”给揪出来。又是一顿折腾,问人,查资料。

邂逅du命令,柳暗花明

终于,我接触到了另一个神器:du。这个命令是专门用来统计文件或者目录占用磁盘大小的。一开始用du的时候,我也踩了不少坑。

直接敲du,它会把当前目录下所有文件和子目录的大小,一个不落地全给我列出来。密密麻麻的,刷屏刷得那叫一个快,根本没办法看。这不对劲,我可不是想看这么细!我只想知道,比如,当前目录下,是哪个子目录最大。

继续摸索,我发现du也有个好用的参数,叫-sh

  • s是summary(总结)的意思,它会把指定目录的总大小给算出来,而不是列出里面所有的文件。
  • h还是human-readable(人类可读)的意思,跟df -h一样,能把大小变成带有G、M的单位。

于是我试了下du -sh 。这个命令的意思就是,给我看看当前目录下所有文件和文件夹的大小而且是人类能看懂的单位。这一敲,好家伙,屏幕上列出来的就是当前目录下的第一层子目录,各自占了多大的地方!一下子清楚多了。

实战出真知:揪出元凶!

有了du -sh 这招,我解决了不少问题。我记得有一次,我们生产环境一个服务器的日志文件爆炸了,那个盘直接就满了。当时我心里咯噔一下,赶紧上去看。

我先用df -h看了下,果然,日志文件所在的那个分区已经百分之九十几了。然后我立马cd到那个日志目录,敲了个du -sh

但是,目录里日志文件太多了,一屏幕也显示不完,而且是乱序的,我还是得自己去找哪个最大。这时候我灵光一闪,我想起了以前学Linux管道符()的知识,这玩意儿就是把一个命令的输出,当成另一个命令的输入。

我心想du -sh 能输出一大堆目录大小,我能不能让它输出的结果,再经过排序,然后只看最大的那几个?

于是我组合了下,敲下了这个命令:du -sh sort -rh head -n 10

  • sort -rh:这个是把前面的输出结果拿过来排序。-r是逆序,让最大的排在前面;-h是按人类可读的单位来排序,不然纯数字排序会乱套。
  • head -n 10:这个简单,就是只显示前10行。

这一串命令敲下去,奇迹出现了!屏幕上清清楚楚地显示出当前目录里,占用空间最大的前10个文件或者子目录。我一看,果然是一个月前的某个日志文件,因为它忘了滚动,一直无限写入,所以撑爆了磁盘!我立马找到那个文件,清理掉一部分,服务器磁盘空间马上就降下来了,业务也恢复了。

总结与感悟

从那以后,我就彻底把df -hdu -sh sort -rh head -n 10这两个命令刻在了脑子里。遇到服务器硬盘空间问题,我再也不会像以前那样抓瞎了。整个过程从懵逼到能解决问题,真是让我觉得,动手实践,不断摸索,才是学习Linux的王道。这些命令看着简单,但真正掌握并灵活运用起来,能帮你解决不少大问题。

所以说,兄弟们,别怕折腾,多动手,多敲敲命令,那些之前让你头疼的问题,可能就是几行简单的命令就能搞定的事儿。不信你试试?