在Linux和Unix-like系统中,管理网络连接是系统管理员和开发者的常见任务,无论是排查网络问题、监控服务状态还是确保安全性,都需要掌握查看所有连接的命令,以下将详细介绍几种常用的查看网络连接的命令,包括它们的基本用法、输出含义及适用场景,并辅以表格对比不同命令的特点,最后以FAQs形式解答常见疑问。

ss命令:新一代网络连接查看工具
ss是iproute2包中的工具,旨在替代传统的netstat命令,其优势在于速度更快、信息更全,尤其在处理大量连接时性能优势明显,基本语法为ss [选项] [过滤条件],常用选项包括:
-t:显示TCP连接-u:显示UDP连接-l:仅显示监听端口-n:以数字形式显示地址和端口(不解析主机名和服务名)-p:显示进程ID和进程名-a:显示所有连接(包括监听和非监听)-4或-6:分别显示IPv4或IPv6连接
示例:
- 查看所有TCP连接:
ss -t - 查看所有监听的UDP连接及进程信息:
ss -ulnp - 查看指定端口(如80)的连接:
ss -tulpn 'sport = :80'
ss的输出字段包括State(连接状态)、Recv-Q、Send-Q、Local Address:Port、Peer Address:Port以及Process等,其中State对于判断连接状态(如ESTABLISHED、LISTEN、TIME_WAIT等)至关重要。
netstat命令:传统但仍在使用的工具
netstat是早期广泛使用的网络工具,尽管在许多现代系统中被ss取代,但仍部分系统默认安装,其基本语法为netstat [选项],常用选项与ss类似:

-t、-u、-l、-n、-p、-a分别对应TCP、UDP、监听、数字、进程、所有连接-c:持续输出连接状态(类似top命令)
示例:
- 显示所有TCP连接:
netstat -t - 显示所有监听端口及PID:
netstat -tulpn
netstat的输出格式与ss略有不同,例如Active Internet connections部分会列出协议、本地地址、外部地址、状态和进程信息,但netstat在处理大量连接时速度较慢,且默认不显示Process字段(需-p选项)。
lsof命令:文件描述符视角下的连接查看
lsof(list open files)原本用于列出系统打开的文件,但由于Linux中一切皆文件,网络连接也被视为文件,因此可通过lsof查看连接,其语法为lsof [选项] [文件/目录/网络设备],常用选项包括:
-i:显示网络连接,可指定协议(如-i TCP)或端口(如-i :80)-P:不解析端口号为服务名-n:不解析主机名-p:指定进程ID
示例:

- 查看所有TCP连接:
lsof -i TCP - 查看占用端口8080的进程:
lsof -i :8080
lsof的优势在于可以关联到具体的文件描述符和进程,适合排查某个进程的网络占用问题,但其输出信息相对分散,不如ss和netstat直观。
netstat、ss、lsof命令对比
| 命令 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|
ss |
速度快,信息全,支持更多过滤条件 | 部分旧系统未预装 | 需高效查看大量连接,需详细状态信息 |
netstat |
兼容性好,输出直观 | 速度慢,功能有限 | 旧系统维护,简单连接查看 |
lsof |
可关联进程和文件描述符 | 输出复杂,针对性较强 | 排查特定进程的网络占用,查看端口占用者 |
其他辅助工具
cat /proc/net/tcp或/proc/net/udp:直接读取内核网络协议栈数据,原始但高效,需手动解析格式(如十六进制地址和端口)。sudo nmap -sT -O localhost:通过端口扫描工具间接检测开放端口和连接状态,适合安全审计。
实际应用场景
- 排查端口占用:使用
ss -tulpn 'sport = :80'查看80端口是否被占用及对应进程。 - 监控异常连接:通过
ss -an | grep ESTABLISHED | wc -l统计活跃连接数,判断是否存在异常连接。 - 分析服务状态:结合
ss -tlnp和systemctl status确认服务是否正常监听端口。
相关问答FAQs
Q1: 为什么ss命令比netstat快?
A1: ss命令直接从内核获取网络连接信息,而netstat需要通过/proc文件系统或解析内核数据,导致效率较低。ss使用更高效的数据结构(如inet_diag套接字),在处理大量连接时性能优势更明显。
Q2: 如何查看某个进程的所有网络连接?
A2: 可通过ss -tulpn | grep 'PID/进程名'(如ss -tulpn | grep nginx)或lsof -p PID(如lsof -p 1234)实现,其中ss通过过滤进程名或PID显示相关连接,lsof则直接列出指定进程的所有打开文件(包括网络连接)。
