刚接触 CentOS 的新手,是不是想看看某个文件多大,对着黑乎乎的命令行发呆?输了 ls 命令,出来一串数字却不知道是 KB 还是 MB;想用图形界面看,又找不到哪里能看大小;最糟的是磁盘满了,连新建文件都提示失败,却不知道大文件藏在哪。小编前阵子帮亲戚的小公司弄服务器,他就指着屏幕说 “这文件到底多大啊,是不是它把磁盘占满了”,其实啊,查看文件大小的方法不少,命令行和图形界面都行,今天就把步骤拆解开,连磁盘满了咋排查都说明白,新手跟着做,不用再抓瞎。
一、命令行查看:先学这 2 个命令,90% 的情况都能解决
命令行看着难,其实记两个核心命令就行,du 和 ls,各有各的用处,新手别混着用。
1. du 命令:看文件夹和大文件,查根目录就靠它
- 看单个文件多大:输 “du -h 文件名”,比如 “du -h backup.tar”,结果会显示 “500M backup.tar”。“-h” 是关键,不加的话显示的是 KB 数,比如 “512000”,还得自己换算成 MB,麻烦。小编第一次用没加 – h,盯着数字算半天,后来才知道有这省事参数。
- 看文件夹总大小:输 “du -sh 文件夹名”,比如 “du -sh /data”,“-s” 是只看总和,“-h” 还是人性化单位,结果可能是 “20G /data”,不用管里面的小文件,一眼就知道文件夹总大小。
- 看文件夹里所有文件大小:输 “du -h 文件夹名”,比如 “du -h /var”,会把文件夹里每个文件、子文件夹的大小都列出来,最后一行是总大小。想找大文件的话,这个命令特好用,就是内容多的时候得翻一会儿。
有个做网站的朋友分享过,他用 du 命令时忘了写文件名,直接输 “du -h”,结果把整个服务器的文件大小都列出来了,滚了好几分钟才停,所以啊,一定要指定具体文件或文件夹,别瞎敲。
2. ls 命令:快速瞥一眼单个文件,临时查看很方便
ls 命令平时是列文件用的,加个参数就能看大小,适合临时想知道某个文件的情况:
- 基础用法:输 “ls -l 文件名”,比如 “ls -l log.txt”,结果里有一列数字,比如 “204800”,这是字节数,换算成 MB 得除以 1024(204800 字节≈200KB)。嫌换算麻烦就加 “-h”:“ls -lh log.txt”,直接显示 “200K log.txt”,清楚多了。
- 看当前目录所有文件:输 “ls -lh”,会把当前目录里所有文件的大小、权限、修改时间都列出来,大小那列带 K、M、G 单位,哪个大哪个小一眼就能看出来。小编每次找临时下载的大文件,都用这个命令,不用记复杂参数。
不过 ls 有个小缺陷 —— 看文件夹的时候,显示的 “4.0K” 不是里面内容的大小,只是文件夹本身的 “空壳” 大小,想知道文件夹里内容总大小,还得用前面说的 du 命令。朋友第一次用 ls 看文件夹,还以为就 4KB,结果用 du 一看有 3G,吓了一跳。
二、图形界面查看:不会命令行?鼠标点几下就行
要是实在怕命令行,CentOS 的图形界面(比如 GNOME)也能看大小,步骤很简单:
- 打开文件管理器:点屏幕左上角的 “应用程序”,找 “系统工具”,里面有 “文件”(就是文件管理器),点进去。
- 找到你想查看的文件或文件夹:比如在 “/home” 目录下找 “downloads” 文件夹,双击进去。
- 看单个文件大小:右键文件,选 “属性”,弹出来的窗口里有 “大小” 这一项,会显示 “2.5 MB”“1.2 GB” 这种,还会告诉你 “占用磁盘空间” 多少,一目了然。
- 看文件夹总大小:右键文件夹,同样选 “属性”,等几秒钟(文件夹越大等得越久),会显示 “包含 XX 个文件,总大小 XX”,下面还有进度条,告诉你正在计算。
小编提醒,图形界面算大文件夹大小的时候可能会卡顿,尤其是里面文件超多的情况,别急着关窗口,等它算完。有个用户说他算一个 10G 的文件夹,进度条走了快一分钟才出来结果,正常的。
三、磁盘满了?3 步找出 “吃空间” 的大文件
磁盘满了的时候,连登录服务器都可能卡,得赶紧找出大文件删掉,按这步骤来:
- 先看磁盘总占用:输 “df -h”,这个命令能看所有磁盘分区的使用情况,比如 “/dev/sda1 50G 48G 2G 96% /”,意思是根分区总大小 50G,用了 48G,快满了,问题可能出在根分区。
- 定位到快满的分区:比如上面显示根分区(/)快满了,就进这个分区找,输 “cd /”(进根目录),再输 “du -h –max-depth=1”,这个命令会列出根目录下每个子文件夹的总大小,比如 “30G /var”“15G /home”,哪个文件夹大就重点查哪个。
- 钻进大文件夹找具体文件:比如发现 “/var” 文件夹占了 30G,就输 “cd /var”,再输 “du -h –max-depth=1”,看里面哪个子文件夹大,一般 “/var/log”(日志文件夹)容易变大。找到大文件夹后,继续用 “ls -lh” 找里面的大文件,比如 “error.log” 有 20G,确认没用就删掉(删之前最好备份,输 “rm -f error.log”)。
有个网友分享过,他的服务器磁盘满了,用 df -h 发现 / 分区满了,再用 du 命令查到是 /var/log 里的一个旧日志文件占了 40G,删了之后立马腾出空间,服务器也不卡了。
命令 | 用途 | 新手必记参数 |
---|---|---|
df -h | 看磁盘总占用情况 | -h(人性化显示单位) |
du -h –max-depth=1 | 看目录下子文件夹大小 | –max-depth=1(只看一级子文件夹) |
ls -lh | 看当前目录文件大小 | -lh(带单位显示详细信息) |
四、自问自答:新手最容易犯迷糊的 3 个问题
问:为啥文件大小和占用磁盘空间不一样?
答:比如一个 1.2MB 的文件,可能显示 “大小 1.2MB,占用 2.0MB”,因为磁盘按 “块” 存东西,一块至少 4KB,小文件也会占一整块,不用纠结,删文件的时候看 “大小” 就行。
问:用命令行看大小,提示 “权限不够” 咋办?
答:在命令前加 “sudo”,比如 “sudo du -h /root”,会让你输密码(输的时候屏幕不显示,输完回车),获取管理员权限就能看了。朋友之前看 /root 目录下的文件,没加 sudo,结果一堆 “权限不够”,加上就好了。
问:能不能只看大于 1G 的文件?
答:能!输 “find /-size +1G”,会在整个服务器里找大于 1G 的文件,结果会显示文件路径,比如 “/home/bigfile.iso”。不过这个命令跑的时间可能有点长,耐心等会儿,大文件跑不了。
五、小编的实在话
新手学查看文件大小,不用一开始就逼自己记所有命令,先把 “du -h 文件名”“ls -lh”“df -h” 这三个练熟,日常够用了。怕命令行就先用图形界面过渡,但建议还是学学命令行,服务器大多时候没图形界面,关键时刻能救命。
磁盘满了的时候别慌,按 “df 查总占用→du 找大目录→ls 找大文件” 的步骤来,准能找到问题。删文件前最好确认一下 “这东西真的没用了吗”,删错了可能出麻烦,小编一般会先把大文件移到备份盘,观察两天没问题再彻底删掉。
你要是哪步卡住了,把输的命令和屏幕显示的结果记下来,发给懂的人看,很容易找到问题。刚开始用 CentOS 都这样,多折腾几次就熟了,真的。