强大的ss命令



ss: 查看 Linux TCP / UDP 网络和套接字信息

by: VIVEK GITE on JUNE 2, 2009

source:http://www.cyberciti.biz/tips/linux-investigate-sockets-network-connections.html

    ss命令和netstat类似,用来显示socket统计信息。能够列出PACKET sockets、TCP sockets、 UDP sockets、DCCP sockets、RAW sockets、Unix域名sockets等统计信息。支持像netstat命令一样显示。和其他工具相比,ss能够显示更多的TCP和描述信息。作为一个非常有用快捷的跟踪TCP连接和套接字的工具。ss提供如下信息:
    所有的TCP套接字。
    所有的UDP套接字。
    所有建立连接的如:ssh / ftp / http / https 的连接信息。
    所有连接到X sever的本地进程。
    过滤类似状态(connected, synchronized, SYN-RECV, SYN-SENT,TIME-WAIT)。地址和端口。
    所有TCP套接字如FIN-WAIT-1等。
    大多数linux发行版本包含了ss及其它一些监控工具,帮助你理解系统sockets在做什么,及找到可能导致性能问题的原因。
 
示例: 显示 Sockets 摘要 
列出当前的established, closed, orphaned and waiting TCP sockets:
  
  1. # ss -s 
  2. Total: 734 (kernel 904) 
  3. TCP:   1415 (estab 112, closed 1259, orphaned 11, synrecv 0, timewait 1258/0), ports 566 
  4. Transport Total     IP        IPv6 
  5. *     904       -         - 
  6. RAW   0         0         0 
  7. UDP   15        12        3 
  8. TCP   156       134       22 
  9. INET      171       146       25 
  10. FRAG      0         0         0   
示例: 列出所有打开的网络连接端口
  
  1. # ss -l 
  2. Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 *:ndmp *:* 0 0 192.168.122.1:domain *:* 0 0 *:ssh *:* 0 0 :::ssh :::*      
通过以下命令查看进程使用的socket:
  
  1. # ss -pl 
找出谁负责打开套接字/端口#4949:
  
  1. # ss -lp | grep 4949 
  2. 0      0                            *:4949                          *:*        users:(("munin-node",3772,5)) 
  3. munin-node (PID # 3772) is responsible for opening port # 4949. You can get more information about this process (like memory used, users, current working directory and so on) visiting /proc/3772 directory: 
  4. # cd /proc/3772 
  5. # ls -l 
示例:显示所有TCP Sockets 
  
  1. # ss -t -a 
示例:显示所有UDP Sockets
  
  1. # ss -u -a  
示例: 显示所有状态为established的SMTP连接
  
  1. # ss -o state established '( dport = :smtp or sport = :smtp )'  
示例: 显示所有状态为Established的HTTP连接
  
  1. # ss -o state established '( dport = :http or sport = :http )' 
示例: 查找本地所有连接到的进程 X Server 
  
  1. # ss -x src /tmp/.X11-unix/* 
示例:列出所有状态为FIN-WAIT-1的Tcp Sockets  
  
  1. # ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 202.54.1/24  
怎样用TCP 状态过滤Sockets?
使用以下参数:
## tcp ipv4 ##
  
  1. ss -4 state FILTER-NAME-HERE 
## tcp ipv6 ##
  
  1. ss -6 state FILTER-NAME-HERE  
FILTER-NAME-HERE 可以代表以下任何一个, 
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listen
closing
 
all : 所有以上状态
connected : 除了listen and closed的所有状态
synchronized :所有已连接的状态除了syn-sent
bucket : 显示状态为maintained as minisockets,如:time-wait和syn-recv.
big : 和bucket相反.
例子:
输入以下命令查看closing sockets:
  
  1. #ss -4 state closing 
  2. Recv-Q Send-Q                                                  Local Address:Port                                                      Peer Address:Port 
  3. 1      11094                                                  75.126.153.214:http                                                      175.44.24.85:4669 
怎样匹配远程地址和端口号?
使用以下参数: 
  
  1. #ss dst ADDRESS_PATTERN 
## 显示所有连接到远程服务器192.168.1.5的端口##
  
  1. #ss dst 192.168.1.5  
## show all ports connected from remote 192.168.1.5:http port##
  
  1. #ss dst 192.168.1.5:http 
  2. #ss dst 192.168.1.5:smtp 
  3. #ss dst 192.168.1.5:443  
Find out connection made by remote 123.1.2.100:http to our local virtual servers:
  
  1. # ss dst 123.1.2.100:http 
  2. State      Recv-Q Send-Q                                             Local Address:Port                                                 Peer Address:Port 
  3. ESTAB      0      0                                                 75.126.153.206:http                                               123.1.2.100:35710 
  4. ESTAB      0      0                                                 75.126.153.206:http                                               123.1.2.100:35758 
怎样匹配本地地址和端口号?
  
  1. #ss src ADDRESS_PATTERN 
### find out all ips connected to nixcraft.com ip address 75.126.153.214 ###
## Show all ports connected to local 75.126.153.214##
  
  1. #ss src 75.126.153.214 
## http (80) port only ##
  
  1. #ss src 75.126.153.214:http 
  2. #ss src 75.126.153.214:80 
## smtp (25) port only ##
  
  1. #ss src 75.126.153.214:smtp 
  2. #ss src 75.126.153.214:25  
怎样将本地或者远程端口和一个数比较? 
使用以下参数: 
## 远程端口和一个数比较##
  
  1. ss dport OP PORT 
##本地端口和一个数比较 ##
  
  1. sport OP PORT 
OP 可以代表以下任意一个: 
<= or le : 小于或等于端口号
>= or ge : 大于或等于端口号
== or eq : 等于端口号
!= or ne : 不等于端口号
< or gt : 小于端口号
> or lt : 大于端口号
注意: le, gt, eq, ne etc. are use in unix shell and are accepted as well.
例子:
###################################################################################
### 注意字符问题 ###
################################################################################### 
  
  1. #ss  sport = :http 
  2. #ss  dport = :http 
  3. #ss  dport \> :1024 
  4. #ss  sport \> :1024 
  5. #ss sport \< :32000 
  6. #ss  sport eq :22 
  7. #ss  dport != :22 
  8. #ss  state connected sport = :http 
  9. #ss \( sport = :http or sport = :https \) 
  10. #ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24 
ss 和 netstat 效率对比 
用time 命令分别获取通过netstat和ss命令获取程序和概要占用资源所使用的时间: 
  
  1. # time netstat -at 
  2.   
  3. Sample outputs: 
  4.   
  5. real    2m52.254s 
  6. user    0m0.178s 
  7. sys 0m0.170s 
  8. Now, try the ss command: 
  9.  
  10. # time ss
  11.   
  12. Sample outputs: 
  13.   
  14. real    2m11.102s 
  15. user    0m0.124s 
  16. sys 0m0.068s 
推荐阅读:查看ss帮助。
<think>首先,用户的问题是:“请问SS命令使用方法 网络连接查看”。这涉及到Linux系统中的ss命令,用于查看网络连接信息。根据系统指令,我需要使用中文回答,结构清晰,逐步解决问题。 参考提供的引用: - 引用[1]:介绍了ss命令的作用、基本语法常用参数。 - 引用[2]:详细说明了ss命令的基本语法、常用选项使用案例。 - 引用[3]:提供了一些具体的使用案例。 我的回答应该基于这些信息,确保真实可靠。结构要清晰,帮助用户逐步解决问题。 回答结构: 1. **引言**:简要介绍ss命令及其重要性。 2. **基本语法**:解释ss命令的基本格式。 3. **常用参数**:列出并解释常用选项,如-t, -u, -l, -a等。 4. **使用案例**:提供一些常见的使用示例,特别是针对网络连接查看。 5. **总结**:简要总结ss命令的优势。 6. **相关问题**:根据系统指令,生成相关问题。 确保遵守LaTeX格式: - 行内数学表达式用$...$,但这里可能不涉及数学表达式,所以可能不需要。 - 独立公式用$$...$$,但同样不适用。 - 使用中文回答。 - 在引用段落末尾添加引用标识,如[^1]。 在回答中,我需要自然地添加引用。例如,当提到引用中的信息时,在末尾加[^1], [^2], [^3]。 生成相关问题: - 系统指令要求生成相关问题,放在最后。 - 相关问题应该基于ss命令的使用,如优化、高级用法、常见问题等。 大纲回答: 1. **介绍ss命令**:解释它是什么,为什么比netstat更好。 2. **基本语法**:给出基本命令格式。 3. **常用参数详解**: - -t: TCP连接 - -u: UDP连接 - -l: 监听中的套接字 - -a: 所有连接 - -n: 数字形式显示 - -p: 显示进程 - -s: 统计信息 - 其他如-o, -4, -6等。 4. **使用案例**: - 查看所有TCP连接 - 查看监听中的端口 - 显示连接统计 - 显示进程信息 5. **总结**:强调ss命令的效率详细性。 6. **相关问题**:生成3-5个相关问题。 确保回答真实可靠:基于提供的引用标准Linux知识。 最终,添加相关问题部分。</think>### SS命令使用方法:网络连接查看 SS命令(Socket Statistics)是Linux系统中用于查看网络连接信息的强大工具,它比传统的netstat命令更高效、更详细,能帮助用户快速诊断网络问题。ss命令直接与内核交互,提供实时数据,适用于监控TCP、UDP等连接状态。以下是针对“网络连接查看”需求的详细使用方法,参考了Linux系统文档常用实践[^1][^2][^3]。 #### 1. **SS命令的基本语法** SS命令的基本格式为: ```bash ss [选项] [过滤条件] ``` - **选项**:用于指定查看的连接类型(如TCP、UDP)或显示格式。 - **过滤条件**:可选,用于筛选特定IP、端口或状态(如ESTABLISHED)。 - 示例:`ss -t` 显示所有TCP连接。 #### 2. **常用参数详解** 以下是针对网络连接查看的核心参数,每个参数都提供具体解释用途[^2][^3]: - **`-t, --tcp`**:仅显示TCP连接(如HTTP、SSH等可靠连接)。 示例:`ss -t` 列出所有活动的TCP连接。 - **`-u, --udp`**:仅显示UDP连接(如DNS查询、视频流等不可靠连接)。 示例:`ss -u` 查看所有UDP数据包传输。 - **`-l, --listening`**:显示所有监听中的套接字(服务端口),常用于检查服务器是否在运行。 示例:`ss -l` 列出系统当前监听的端口(如Web服务器的80端口)。 - **`-a, --all`**:显示所有连接,包括监听非监听状态(如ESTABLISHED、CLOSED)。这是全面查看网络活动的首选参数。 示例:`ss -a` 查看所有连接状态。 - **`-n, --numeric`**:以数字形式显示地址端口(不解析为主机名或服务名),提高速度。 示例:`ss -t -n` 显示TCP连接的数字IP端口号。 - **`-p, --processes`**:显示使用套接字的进程信息(如进程ID名称),便于识别占用网络的程序。 示例:`ss -p` 查看哪个进程在使用特定端口。 - **`-s, --summary`**:显示网络连接统计摘要(如总连接数、各状态连接比例),用于快速性能分析。 示例:`ss -s` 获取系统整体socket使用概况[^1][^3]。 - **其他实用参数**: - `-4`:仅显示IPv4连接。 - `-6`:仅显示IPv6连接。 - `-o, --options`:显示计时器信息(如连接超时时间)。 - `-e, --extended`:显示详细套接字信息(如接收/发送队列大小)。 #### 3. **常见使用案例** 以下是针对网络连接查看的典型场景命令示例,结合实际输出说明[^2][^3]: - **查看所有TCP连接**: ```bash ss -t -a ``` 输出示例:显示所有TCP连接状态(如`LISTEN`、`ESTABLISHED`),便于排查连接问题。 - **查看监听中的端口**: ```bash ss -l ``` 输出示例:列出所有监听套接字,快速确认服务(如Apache或Nginx)是否启动。 - **显示UDP连接并解析主机名**: ```bash ss -u -r ``` 输出示例:显示UDP连接的详细信息,包括主机名解析(如`google.com:53`)。 - **查看连接统计摘要**: ```bash ss -s ``` 输出示例:提供总连接数、各协议分布(如TCP/UDP),帮助评估网络负载[^1]。 - **结合进程信息查看**: ```bash ss -t -p ``` 输出示例:显示每个TCP连接关联的进程ID名称(如`nginx`),用于安全审计或资源优化。 #### 4. **SS命令的优势总结** SS命令通过直接访问Linux内核数据结构,提供比netstat更快的速度更丰富的细节(如队列大小、内核参数)。它适合实时监控、故障排查性能优化,尤其在大型网络环境中效率显著[^1][^2]。日常使用时,建议结合参数如`-n`(数字显示)`-p`(进程信息)以提升效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值