从一道面试题来聊聊linux的df和du命令

作为面试官,面试候选人时,经常会考linux的基础命令,毕竟招来的人基本功要好,要能干活,通常linux命令是我必考候选人的一关,这也是老板要求的,如果很常用的命令都不会,我觉得候选人可能linux服务器接触的少(因为从面试人的反馈来说,有的人会告诉我,平时这些都是运维来操作的,我作为一个业务开发没怎么关注过),那基本上这样的面试者可能给我的面试印象就大打折扣了。

记得之前我出过一道这样的面试题,旨在考linux 基本功,题目大意是:在运维过程中,如果收到服务器磁盘告警,该如何处理?(如何找到哪个目录占用磁盘空间大,或者如何找出占用磁盘空间大的前几个目录或文件?)

其实这道题回答的比较完美的候选人比较少,有答df的,有答不知道的,也有答du的,但是继续追问的话,回答的模棱两可。对自己答案又不自信了。

下面我来大概的说一下作为面试官(或者我自己),一般想听到什么样的答案?

首先第一层,我想听到df命令的答案,一般我会先用df -h查看linux服务器的文件系统的磁盘空间(分区/设备文件路径)占用总体的情况,方便知道哪个设备目录磁盘不足了。

[root@xxx /tmp]# df -h

文件系统 容量 已用 可用 已用% 挂载点

devxxx 16G 0 16G 0% /dev

xxx 16G 24K 16G 1% /dev/shm

xxx 16G 266M 16G 2% /run

xxx 16G 0 16G 0% /sys/fs/xxxx

/dev/vda1 99G 28G 67G 30% /

/dev/vdb1 493G 393G 75G 85% /data

xxx 3.1G 0 3.1G 0% /run/user/0

ip:/eee x.0P xT x.xP 6% /mnt/yyy/ddd

从上图看(已用%)列,可以看到,/data目录占用了85%,是已使用占比最大的,当磁盘告警时,有些公司的告警策略会告诉运维人员,哪个文件系统超了多少percent(80%或90%,具体看告警阈值的设定是多少),需要去处理,如果没有告诉是哪个文件系统路径的话,首先得用df -h 查看。

其次第二层,我想听到的是du命令这个答案,当我知道哪个文件系统占比高需要处理(删除)文件之后,我得知道要去哪个目录删哪些文件,此时肯定是要找到此文件系统目录中,哪个目录占比大?这样删除大文件后能很快解除磁盘告警。

[root@job1 /data]# du -sh ./* | sort -hr | head -n 10

183G ./tmp

93G ./tmp_ddd

71G ./logs

35G ./aaa

14G ./home

51M ./bbb

3.1M ./ccc

20K ./ddd

16K ./eee

8.0K ./fff

上面是我平时喜欢用的一个du命令,也许他无法一把找出具体哪个文件大,但是胜在够快和直观,可能不同开发所用的命令会略有不同,但大体常用的参数差不多,有-ah的,有-sh的,有加max-depth的,大同小异,鄙人习惯了上述代码中的命令,速度快,不需递归下去,如果要继续找,可以持续使用该命令。

简单介绍下上述命令的含义:

du:

-s或--summarize 仅显示总计

-h或--human-readable 以K,M,G为单位,提高信息的可读性

sort:

-h: 按文件大小升序排列

-hr: 按文件大小倒序排列,-r 为reverse的意思

head:

-n 10: 取结果集前十个

#如果想取结果集后十个,可以用tail -n 10


专注Web开发,后台开发,欢迎关注和交流

以上是 从一道面试题来聊聊linux的df和du命令 的全部内容, 来源链接: utcz.com/z/267491.html

回到顶部