«

Linux查看开放端口netstat和ss命令教程

时间:2026-11-14 07:39     作者:emer     分类: 无


在 Linux 运维中,查看服务器到底开放了哪些端口、哪个进程在监听某个端口,是排查网站访问失败、端口冲突、安全扫描的基本功。常用工具是老命令 netstat 和新命令 ss,两者输出接近,但 ss 性能更好、参数更简洁。本文把常用写法一次讲清。

一、netstat 查看监听端口

netstat 在很多发行版里属于 net-tools 包,最小化安装可能没有,先装:

# CentOS7
yum install -y net-tools

# Ubuntu/Debian
apt install -y net-tools

查看所有处于监听状态的 TCP 端口:

netstat -tlnp

参数含义:-t 只看 TCP,-l 只看监听(LISTEN)状态,-n 以数字显示端口不反解域名,-p 显示占用端口的进程名和 PID。

只看某个端口,例如 80:

netstat -tlnp | grep :80

查看所有连接(含已建立的):

netstat -anp

二、ss 命令(推荐,更快)

socket statistics(ss)是 iproute2 自带工具,速度比 netstat 快,参数几乎一一对应:

ss -tlnp

只看监听端口、数字显示、带进程:

ss -ltnp

查看某个端口被谁占用:

ss -tlnp | grep :443

只看 TCP 或 UDP:

ss -tlnp   # TCP
ss -ulnp   # UDP

三、输出字段怎么读

以 netstat -tlnp 为例,一行大致是:

Proto Recv-Q Send-Q Local Address  Foreign Address  State   PID/Program name
tcp        0      0 0.0.0.0:22     0.0.0.0:*        LISTEN  1024/sshd

四、结合 lsof 精确定位

如果只想查单个端口由哪个进程打开,lsof 更直观:

lsof -i:80

没有 lsof 先安装:yum install -y lsof。

常见坑

  1. 只看 LISTEN 不够:外部能否访问还要叠加防火墙、安全组、绑定地址(0.0.0.0 才对外)。
  2. netstat 提示 command not found:缺 net-tools 包,yum install net-tools。
  3. -p 查不到进程名:普通用户看不到其他用户进程,加 sudo 或切 root。
  4. 端口监听在 127.0.0.1:外部永远连不上,这是很多人“服务起了却访问不到”的原因。
  5. ss 和 netstat 输出不一致时,以 ss 为准,它直接读内核连接表,更实时。

总结

日常排查推荐 ss -tlnp 一把梭,需要兼容老系统时用 netstat -tlnp,再配合 grep 端口号和 lsof -i:端口 定位进程。记住“监听地址 + 防火墙 + 安全组”三层都放开,端口才真正对外可用。

遇到问题加QQ23979811 协助处理

标签: Linux netstat ss 查看端口 lsof