Linux如何检测服务是否正在监听端口?lsof与nc命令实践

哎,这事儿我得跟你唠唠。
我之前在服务器上捣鼓,遇到过不少端口问题。
Linux这玩意儿,得手把手教你。

前年,我在北京搞一个项目,服务器是CentOS的。
有一回,系统报错,说8 0端口好像被占了。
我第一反应就是用lsof。

打开终端,敲sudo lsof -i:8 0。
你瞅瞅那输出,能看到一长串,得找半天。
不过我那次很快就找到了,看到有个进程号,是nginx在那儿 LISTEN 着。
心里就踏实了。

但你别说,有时候就麻烦。
我还有一次,lsof显示8 0端口没问题,但我用浏览器访问网站就是打不开。
这我就犯嘀咕了。
这时候就得试试nc了。

我就在终端敲nc -zv localhost 8 0。
这命令没啥意思,就是测试下端口通不通。
结果它告诉我,连接成功了!嘿,这就怪了。
那会儿我怀疑是不是防火墙给关了。
赶紧去查iptables,果然,有个规则给拦截了。
我把规则改了,就好了。

还有个事儿,也是用lsof。
我有个客户的服务器,是Ubuntu的。
有一次,lsof显示8 0端口是空的,啥也没有。
我就想,咋回事呢?后来发现,服务明明是开的,但就是没监听8 0端口。
得,得改配置了。

你看,lsof是能看到具体是哪个进程在监听,nc是测试下端口能不能连上,ss或者netstat是快速看所有端口。
有时候得结合起来看。

我这人吧,就是喜欢动手试试。
你不试试,咋知道问题出在哪?有时候lsof显示监听,但nc连不上,那多半是防火墙或者服务没绑定对地址。
得一个个查。

就这么着,踩坑多了,也就明白咋回事了。
你记住了,别光看命令,得结合实际情况。
比如,你在上海,服务器在广东,那肯定得注意IP地址绑定的事儿。

哦对了,nc这玩意儿,有的系统得自己装。
像CentOS得用yum install nmap-ncat,Debian/Ubuntu得用apt install netcat。
你装的时候注意下。

就这么多了,你试试看,有问题再来问我。

linux?如何查看服务和端口

对,就是这个问题。
netstat和lsof是Linux里查端口和服务的利器。

用netstat,想看啥?数字地址?TCP/UDP连接?监听端口?程序名?直接加参数。

比如,netstat -ntulp,全来一遍。

找特定端口?netstat -an | grep [端口号]。

lsof?直接lsof -i:[端口号],看哪个程序在用。

两者结合,比如netstat -ntulp | grep processname,找进程相关的连接。

你自己看,还有啥想问的?