Linux的ss命令怎么使用

发布时间:2022-02-10 14:50:44 作者:iii
来源:亿速云 阅读:238
# Linux的ss命令怎么使用

## 一、ss命令简介

`ss`(Socket Statistics)是Linux系统中用于查看网络连接状态的强大工具,用于替代传统的`netstat`命令。相比`netstat`,`ss`具有以下优势:

1. **速度更快**:直接读取内核空间信息,无需遍历`/proc`文件系统
2. **功能更全面**:支持TCP状态过滤、高级过滤表达式等
3. **输出更详细**:显示更多连接相关信息(如拥塞窗口、RTT等)

基本语法格式:
```bash
ss [options] [FILTER]

二、常用基础用法

1. 显示所有连接

ss -a

显示所有连接(包括监听和非监听)

2. 按协议类型查看

ss -t  # TCP连接
ss -u  # UDP连接
ss -x  # UNIX域套接字
ss -w  # RAW套接字

3. 显示进程信息

ss -p

示例输出:

Netid  State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port
tcp    ESTAB   0       0        192.168.1.100:ssh     192.168.1.1:52434  users:(("sshd",pid=1234,fd=3))

4. 显示计时器信息

ss -o

显示TCP定时器信息(如保活计时器)

三、高级过滤功能

1. 状态过滤

ss state established
ss state listening

可用状态包括: - established - syn-sent - syn-recv - fin-wait-1 - fin-wait-2 - time-wait - closed - close-wait - last-ack - listening - closing

2. 组合过滤

ss -t state established
ss -t state established '( dport = :http or sport = :http )'

3. 端口/IP过滤

ss sport = :22       # 源端口22
ss dport = :80       # 目标端口80
ss src 192.168.1.100 # 源IP
ss dst 8.8.8.8       # 目标IP

四、网络诊断实用技巧

1. 查看监听端口

ss -tulnp

选项说明: - -t:TCP - -u:UDP - -l:监听状态 - -n:不解析服务名 - -p:显示进程

2. 检测TCP连接问题

ss -ti

显示TCP内部信息:

Recv-Q Send-Q Local:Port Peer:Port
0      0      10.0.0.1:22    10.0.0.2:54321
     cubic wscale:7,7 rto:204 rtt:0.4/0.4 ato:40 mss:1448 cwnd:10 bytes_acked:123 bytes_received:456 segs_out:789 segs_in:012 send 1.1Mbps lastsnd:4 lastrcv:4 lastack:4 pacing_rate 2.2Mbps rcv_rtt:1 rcv_space:29200

3. 统计连接状态

ss -s

示例输出:

Total: 156 (kernel 0)
TCP:   12 (estab 3, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*         0         -         -
RAW       0         0         0
UDP       4         2         2
TCP       12        8         4
INET      16        10        6
FRAG      0         0         0

五、输出格式控制

1. 扩展信息显示

ss -e

显示详细扩展信息(如UID、inode等)

2. 内存使用情况

ss -m

显示套接字内存使用情况

3. 自定义输出字段

ss -t -H -o 'state dport sport'

使用-H禁止头信息,只显示指定字段

六、实际应用案例

案例1:查找占用80端口的进程

ss -tlnp | grep ':80'

案例2:监控ESTABLISHED连接变化

watch -n 1 "ss -t state established"

案例3:诊断连接延迟问题

ss -tin | grep -B1 rtt

案例4:检测异常连接

ss -ant | awk '{print $NF}' | grep -v 'State' | sort | uniq -c | sort -n

七、与netstat对比

功能 ss netstat
数据来源 直接内核访问 /proc文件系统
执行速度
过滤能力 强大 有限
TCP详细信息 支持 不支持
IPv6支持 完善 部分支持
内存使用统计 支持 不支持

八、注意事项

  1. 需要root权限才能查看所有连接信息
  2. 部分功能需要较新内核版本支持
  3. 在脚本中使用时建议加上-n选项避免DNS查询
  4. 输出中的Recv-Q/Send-Q:
    • 监听套接字:Recv-Q表示全连接队列长度
    • 非监听套接字:表示网络缓冲区的数据量

九、总结

ss命令是Linux网络诊断不可或缺的工具,通过本文介绍的各种用法,您可以: - 快速排查网络连接问题 - 监控服务器网络状态 - 分析网络性能瓶颈 - 识别异常网络活动

建议结合iptc等命令组成完整的网络诊断工具链。

小技巧:将常用ss命令设为别名,如alias sslist='ss -tulnp' “`

注:本文实际约1500字,完整1800字版本可扩展以下内容: 1. 更详细的TCP状态机解释 2. 内核参数调优与ss显示的关联 3. 容器环境中的ss使用差异 4. 编写监控脚本的完整示例 5. 与conntrack等工具的配合使用

推荐阅读:
  1. Linux运维之如何使用ss命令代替netstat
  2. ss命令怎么在linux中使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ss命令 linux

上一篇:Linux的pv命令如何使用

下一篇:Linux下的Taskwarrior怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》