测试环境服务器硬盘塞满问题排查

641 阅读2分钟

项目中出现的问题

文章出处

某天下午测试环境服务器出现tab无法补全命令,给出的提示大概意思就是说,无可用空间无法创建临时文件,不过这次跟上次出现的问题比较像,上次服务器出现的问题,因此楼主判断可能是服务器数据盘被占满,果不其然,使用df -h命令看到服务器数据盘出现100%被占用的情况。

问题排查过程

楼主首先想到的是可以看到,linux系统中占用数据盘最大的文件,常情况下,最有可能找出占用磁盘空间文件或文件夹的地方,主要是 /tmp or /var or /home or /。 目前没有单个命令来完成查找的工作,通常可以使用一些命令的组合来帮助您找出磁盘上比较占用空间的文件或者文件夹。主要用到下面的三个命令:

  • du : 计算出单个文件或者文件夹的磁盘空间占用.
  • sort : 对文件行或者标准输出行记录排序后输出.
  • head : 输出文件内容的前面部分.

用下面的命令组合就可以完成上述查找工作:

du -h / | sort -n -r | head -n 10

上述命令的含义就是查找/目录下按照大小排序占用磁盘空间最大的10个文件。

如果需要输出可读性更高的内容,请使用如下命令:

du -hsx * | sort -rh | head -10

ok,到此为止问题华华丽丽的解决了,很开心哦。

分享一个命令的使用

lsof -i

在使用Linux系统的过程中,有时候会遇到端口被占用而导致服务无法启动的情况。比如HTTP使用80端口,但当启动Nginx时,却发现此端口正在使用。

这种情况大多数是由于软件冲突、或者默认端口设置不正确导致的,此时需要查看究竟哪个进程占用了端口,来决定进一步的处理方法。

一般情况下查看某一端口的占用情况的用法是: lsof -i:端口号 例如查看80端口的使用情况

lsof -i:80
COMMAND  PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    7464   root  272u  IPv6 7111192      0t0  TCP 192.168.201.8:45616->192.168.201.8:http (CLOSE_WAIT)
nginx   7555   root    7u  IPv4 7110265      0t0  TCP *:http (LISTEN)
nginx   7556 nobody    7u  IPv4 7110265      0t0  TCP *:http (LISTEN)
java    7573   root  210u  IPv6 7110330      0t0  TCP 192.168.201.8:45422->192.168.201.8:http (CLOSE_WAIT)
java    7602   root  140u  IPv6 7111090      0t0  TCP 192.168.201.8:45412->192.168.201.8:http (CLOSE_WAIT)

结束该端口的占用可以会用kill pid的方法。