项目中出现的问题
文章出处
某天下午测试环境服务器出现 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 的方法
来源: https://juejin.im/post/5aa650e0f265da239235fdca