在CentOS 6系统中,ss命令是查看网络端口和连接状态的高效工具,以下是对ss命令的详细讲解:
一、基本用法
1、查看所有监听的TCP端口:使用ss lt命令可以列出所有处于监听状态的TCP端口,执行ss lt后,输出中会显示类似如下的信息:

State RecvQ SendQ Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:
LISTEN 0 128 [::]:22 [::]:
这表明系统正在监听的端口号为22,通常对应SSH服务。
2、查看监听的TCP端口及其进程信息:为了查看哪些进程正在监听特定端口,可以使用p选项,执行ss ltnp后,输出示例如下:
State RecvQ SendQ Local Address:Port Peer Address:Port Process

LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=761,fd=3))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=761,fd=4))
这段输出表明,sshd服务(SSH守护进程)正在监听端口22,sshd的进程ID(PID)为761。
3、查看所有UDP端口:UDP是另一种常见的传输协议,用于无连接通信,使用ss lun命令可以查看系统中所有正在监听的UDP端口。
4、查看所有TCP和UDP端口:有时可能需要同时查看TCP和UDP端口的占用情况,可以通过组合选项来实现,例如ss ltnpu。
二、高级用法与过滤选项
1、根据连接状态过滤:如果只对特定状态的连接感兴趣,比如已建立的连接,可以使用state选项进行过滤,使用ss t state ESTABLISHED命令将只显示所有处于ESTABLISHED状态的TCP连接,常见的连接状态包括ESTABLISHED(连接已经建立)、LISTEN(服务器正在监听连接)、SYNSENT(客户端已经发送SYN包,正在等待确认)、CLOSEWAIT(连接已经关闭,等待本地关闭)等。

2、按端口号过滤:可以通过过滤特定端口号来缩小查询范围,要查看所有与80端口相关的连接,可以使用ss t '( sport = :9876 or dport = :9876 )'命令。sport表示源端口,dport表示目标端口。
3、查看连接的详细统计信息:ss命令还可以提供网络连接的统计信息,以帮助更好地理解系统的网络状况,使用ss s命令可以查看统计信息,输出示例可能如下:
Total: 92 (kernel 96)
TCP: 12 (estab 3, closed 3, orphaned 0, synrecv 0, timewait 3/0), ports 0
Transport Total IP IPv6
* 96
RAW 0 0 0
UDP 8 4 4
TCP 9 6 3
INET 17 10 7
FRAG 0 0 0
三、安装方法
在CentOS上,iproute2工具包通常默认安装,如果发现ss命令不可用,可以通过以下步骤进行安装:
1、更新系统软件包:sudo yum update。
2、安装iproute2工具包:sudo yum install iproute。
完成以上步骤后,就可以使用ss命令进行网络状态管理了。
四、FAQs
1、问:为什么选择ss命令而不是传统的netstat命令?
答:ss命令相比netstat命令具有多个优势。ss直接从内核获取数据,处理大量连接时更加高效,尤其是在高并发环境下响应速度更快。ss提供了更多的过滤选项和自定义输出格式,用户可以根据需求精准地获取所需信息。ss还更好地支持现代网络协议和特性,更适合当前复杂的网络环境。ss命令的语法更加简洁,易于记忆和使用。
2、问:如何在CentOS 6上安装ss命令?
答:在CentOS 6上,ss命令通常是iproute2工具包的一部分,如果系统没有默认安装该工具包,可以通过以下步骤进行安装:首先更新系统软件包列表,然后安装iproute2工具包,具体命令如下:
sudo yum update sudo yum install iproute
安装完成后,就可以使用ss命令来查看网络端口和连接状态了。
