ss比netstat更高效,推荐使用;两者用于查看网络连接、监听端口和进程信息,常用命令包括ss -a、ss -t、ss -l、ss -p及ss -tulnp组合。
在Linux系统中,netstat 和 ss 是两个用于查看网络连接状态、端口监听情况和套接字信息的重要命令行工具。虽然功能相似,但ss 更现代、性能更高,推荐优先使用。下面分别介绍它们的基本用法。
查看所有活动连接
显示当前系统中所有的TCP、UDP连接以及监听端口:
- netstat -a
- ss -a
这两个命令会列出所有活跃的网络连接,包括正在监听的服务和已建立的连接。
查看TCP和UDP连接
若只想查看特定协议的连接,可以使用以下命令:
- netstat -t # 仅显示TCP连接
- netstat -u # 仅显示UDP连接
- ss -t # ss查看TCP连接
- ss -u # ss查看UDP连接
结合 -a 参数可同时包含监听和非监听状态的连接,例如 ss -at 显示所有TCP连接。
显示监听端口
查看哪些端口正在等待外部连接(即服务监听状态):
- netstat -l # 列出所有监听中的端口
- netstat -tl # 只看TCP监听端口
- netstat -ul # 只看UDP监听端口
- ss -l # ss查看监听端口
- ss -tl # ss查看TCP监听端口
通常用于检查Web服务器(80/443)、SSH(22)等服务是否正常启动并监听。
显示进程信息与PID
要查看是哪个程序打开了某个网络连接,需要显示关联的进程信息:
- netstat -p # 显示进程名和PID
- ss -p # 同样显示进程信息
这个功能在排查可疑连接或确认服务归属时非常有用。注意:部分信息可能因权限不足而无法显示,建议使用 sudo 执行。
结合过滤查看特定连接
实际使用中,常配合 grep 进行筛选,例如查找所有SSH相关连接:
- ss -t | grep :22
- netstat -an | grep :80 # 查看HTTP连接
也可以使用 ss 的内置过滤功能:
- ss dst 192.168.1.100 # 查看目标为该IP的连接
- ss state established # 只显示已建立的连接
- ss sport = :http # 源端口为80的连接
netstat 来自 net-tools 包,较老旧,在高负载系统中可能较慢;ss 属于 iproute2 套件,直接从内核获取信息,速度更快,功能更强大。现在很多发行版默认不再安装 netstat,建议掌握 ss 的使用。
基本上就这些。日常排查网络问题时,ss -tulnp 是一个非常实用的组合,能快速列出所有监听端口及对应进程。