linux怎么看某个端口是否打开

前两天,我在公司服务器上调试Web应用程序时,突然遇到一个问题:为什么8 0端口没有响应?我习惯性地打开终端,对自己说:“我需要检查一下这个端口是否被占用。
”于是,我打开命令行,先切换到root用户,然后输入“lsof -i :8 0”。
屏幕上什么也没有。
我感到有点紧张,但转念一想,不,这个端口应该保持开放。
然后我又尝试了“netstat -aptn”,结果也是空白。

我突然想到,这是防火墙的问题吗?我立即检查了防火墙设置,发现确实有限制外部访问8 0端口的规则,暗自庆幸系统没有出现什么大问题。
后来网上查了一下,发现在新版本的Linux系统中建议使用“ss-tool”,而不是“netstat”。
我试了一下,当然很快就可以看到端口的详细信息了。

这段小小的经历让我认识到,虽然系统工具很强大,但有时还是要根据系统版本和实际情况来选择合适的命令。
等等,我也意识到了一些事情。
难道是系统升级导致的兼容性问题?我得找个机会学习一下。

linux中怎么查看端口是否被占用

哈,我以前遇到过这个问题几次,尤其是一些新手,他们无法理解命令行输出并忙着解决它。
你总结得很完美。
我会给大家一个比较流畅的总结,尤其是容易混淆的地方。

想想上次我在上海的一家购物中心帮助隔壁商店的老板解决服务器问题。
男服务器突然无法连接。
我上去一看,发现8 0端口没有了。
它一定已经关闭了。
如果我不使用 sudo netstat -anp | grep 8 0,我将无法判断哪个进程失败了。
你看,sudo是不可或缺的。
普通用户没有查看进程的权限。

但是netstat命令,有时输出太长,难以观看。
我现在更喜欢使用 ss,它更快。
例如,sudo ss -tulnp | grep 8 0,它应该很快就会出来。
而且你说得对,ss显示的进程信息更加直观。
上次我在杭州数据中心,端口显示LISTENING。
我想了很久是不是系统bug,结果发现是监控工具误报。
我切换到ss,清楚地看到是nginx。
所以你所说的区分LISTENING和LISTENING是非常重要的。

TCP 和 TCP6 还有另一个陷阱。
我有一个朋友是开发人员,对此不太熟悉。
结果,他混淆了netstat -anp | grep 4 4 3 与 netstat -anp | grep TCP:4 4 3 你看,这个tcp:加法很容易忘记。
4 4 3 是HTTPS端口,它依赖于TCP协议。
如果我最后没有用ss来比较的话,我几乎会在生产环境中关闭HTTPS。

综上所述,你提到的方法都是正确的。
启动程序应从 netstat -anp | 开始先 grep 端口号,然后使用 ss -tulnp | grep 端口号,当他们熟悉它时。
最重要的是要记住: 1 .需要添加sudo(除非你是root) 2 .注意LISTEN状态,不要被LISTEN迷惑 3 、注意TCP和TCP6 的区别。
像4 4 3 这样的HTTPS依赖于TCP
我还在想一个问题,就是如果我发现端口被占用了,如何快速查看是谁打开的? netstat和ss的最后一列可以显示进程名,但是如果进程名太长或者不完整怎么办?上次查北京的同学,netstat只显示mysqld,但不知道mysqld服务。
最后,我不得不使用 pidof 或 ps aux | grep mysqld 来找到它。
您需要单独记住这一点。