在 Linux 系统中,监听端口 是指某个 进程 在特定的 TCP 或 UDP 端口上等待客户端的连接请求。要检查哪些端口正在被监听,最常用的工具是 netstat、ss 和 lsof。

netstat 是传统的网络统计工具,使用 -tlnp 选项可以列出所有 TCP 监听端口及其对应的进程。其中 -t 表示 TCP,-l 表示仅显示监听状态,-n 表示以数字形式显示地址和端口,-p 表示显示进程 PID 和名称。例如:netstat -tlnp。若需同时查看 UDP 监听,可用 -ulnp 或合并为 -tulnp。
ss 是 iproute2 套件中的现代替代工具,性能优于 netstat。类似地,ss -tlnp 显示 TCP 监听端口及其进程信息。选项含义与 netstat 一致,但输出更简洁,解析速度更快。推荐优先使用 ss,因为它在高负载环境下更稳定。
lsof -i :端口号 可以查看特定端口上正在监听的进程。例如 lsof -i :80 显示所有占用 80 端口的进程(包括 LISTEN 和已建立的连接)。若不加端口号,lsof -i 会列出所有网络连接。注意 lsof 默认需要以 root 权限运行才能看到所有进程信息。
在实际操作中,执行 sudo netstat -tlnp 或 sudo ss -tlnp 即可获得最完整的监听端口列表。输出中 State 列显示为 LISTEN 的行表示该端口正处于监听状态。Local Address 列的 0.0.0.0:端口 表示监听所有网络接口,而 127.0.0.1:端口 表示仅监听本地回环接口。PID/Program name 列则直接关联到监听进程。
如果需要监听一个端口(即让一个进程主动绑定到某端口),通常通过编写 Socket 程序 或配置 服务软件(如 nginx、apache、sshd)来实现。当服务启动后,操作系统会将该端口标记为 LISTEN 状态。注意:普通用户无法监听 1024 以下的 特权端口,除非拥有 CAP_NET_BIND_SERVICE 权限或使用 root 权限。
综上所述,ss -tlnp 是最推荐的方式,结合 grep 可快速过滤特定端口。例如 sudo ss -tlnp | grep 443 检查 443 端口是否被监听。这些命令的输出能清晰展示系统中所有活跃的监听端口及其背后的进程,是网络故障排查和安全管理的基础。

查看详情

查看详情