Go to main content

手册页部分 8:系统管理命令

退出打印视图

更新时间: 2018年8月8日 星期三
 
 

tcpstat(8)

名称

tcpstat - 报告有关 TCP 和 UDP 通信流量的统计信息

用法概要

tcpstat [-cegkLmnrt] [-a 
address[,address...]] [-A 
address[,address...]]
	    [-d d|u] [-E all|event[,event...]] [-i interface[,interface...]]
[-i pid[,pid]] [-l nlines]
	    [-p port[,port...]] [-P port[
,port...]] [-s key | -S key] 
	[-T protocol[,protocol...]]
	    [-u R|K|M|G|T|P] [-x opt[
=val][,opt[=val]...]]
	    [-z zonename[,zonename...
]] [interval [count]]

描述

tcpstat 实用程序根据选定的输出模式和排序顺序来收集和报告有关 TCP 和 UDP 通信流量、错误事件以及 MIB 事件的统计信息。tcpstat 还提供了一些选项来仅收集和报告与指定源或目标地址、接口、进程 ID、源或目标端口以及区域名称匹配的通信流量的统计信息。

选项

支持以下选项:

–a address[,address...]

对源地址进行过滤。

–A address[,address...]

对目标地址进行过滤。

–c

在以前的报告下方列显新报告而不是将其覆盖。

–d d|u

每个报告列显时间戳,采用标准日期格式 (-d d) 或自纪元以来的秒数,即 Unix 时间 (-d u)。

–e

显示包错误事件。

–E all|event[,event...]

显示 TCP 或 UDP MIB 事件(或两者)的逗号分隔列表,事件名称不区分大小写。有关整套可用事件,请运行 tcpstat -L 命令。

–g

按通信流分组。

–i pid[,pid...]

对 PID 进行过滤。

–k

显示包统计信息。

–l nlines

每个报告输出的数据行数。

–L

列出所有可用的协议事件。

–m

生成计算机可解析的输出。

–n

将网络地址显示为数字。不将 IP 地址解析为主机名。

–p port[,port...]

对源端口名称进行过滤。

–P

对目标端口名称进行过滤。

–r

仅显示接收到的包的数据。

–s key | –S key

按照 key 以升序 (–S) 或降序 (–s) 排序,其中 key 可以为如下值:

  • zone-区域名称

  • pid-进程 ID

  • proto-传输层协议

  • source-源 IP 地址

  • sport-源端口

  • dest-目标 IP 地址

  • dport-目标端口

  • bytes-数据量

缺省情况下,协议通信流量的数据按字节数以降序排序。协议事件或错误事件的数据按流元组以降序分组。

–t

仅显示传输的包的数据。

–u R|K|M|G|T|P

如果使用了该选项,则可以选择显示所有统计信息所用的单位,例如 R:原始计数、K:千位、M:兆位、T:兆兆位、P:千兆兆位。如果没有使用该选项,则将根据情况使用不同单位显示统计信息,采用 xy.zU 格式,其中 x、y 和 z 是数字,U 是相应的单位。

–T protocol[ ,protocol...]

指定要显示的传输层协议。可接受的选项为 TCP 或 UDP。缺省情况下,显示所有支持的传输层协议的数据。

–x opt=val[,opt=val]

启用或修改 DTrace 运行时选项或 D 编译器选项。完整的选项列表位于 dtrace(8)。对于此实用程序,最有用的选项为 aggsizeaggrate。如果尝试修改以下选项之一,此实用程序将显示如下错误消息:

Data dropped.  Consider using '-x aggsize=8k' option.

aggsize 的缺省值为 512k。aggrate 的缺省值为 1Hz。

–z zonename[ ,zonename...]

对区域名称进行过滤。

输出

下面的列表介绍了 tcpstat 报告的列标题和含义:

ZONE

与该网络通信流量关联的区域的名称。

PID

与该网络通信流量关联的进程 ID。

PROTO

与该网络通信流量关联的协议。

SADDR

与该网络通信流量关联的源 IP 地址或主机名。

SPORT

与该网络通信流量关联的源端口。

DADDR

与该网络通信流量关联的目标 IP 地址或主机名。

DPORT

与该网络通信流量关联的目标端口。

RATE

抽样间隔内的网络通信流量速率或包错误事件数。速率显示为字节数,但也可以使用 –k 将其更改为包数。在不可解析模式下,速率将根据需要进行调整(可以选择通过 –u 选项进行调整),并显示 K、M、G、T 或 P 后缀。在可解析模式下,始终显示未经调整的速率。

EVENT

协议事件的名称。

ERR-BYTES

抽样间隔内的包错误事件速率。在常规输出中,此速率以每秒字节数(无后缀)、千字节数 (K)、兆字节数 (M)、千兆字节数 (G)、兆兆字节数 (T) 或千兆兆字节数 (P) 为单位来报告。在计算机可解析的输出中,此速率以每秒字节数为单位来表示。–u 选项可用于为此数字指定固定单位。

PKTS

抽样间隔内包中的网络通信流量速率。在常规输出中,此速率以每秒包数(无后缀)、每秒千包数 (K)、每秒兆包数 (M)、每秒千兆包数 (G)、每秒兆兆包数 (T) 或每秒千兆兆包数 (P) 为单位来报告。在计算机可解析的输出中,此速率以每秒包数为单位来表示。–u 选项可用于为此数字指定固定单位。

ERR-PKTS

抽样间隔内包中的包错误事件速率。在常规输出中,此速率以每秒包数(无后缀)、每秒千包数 (K)、每秒兆包数 (M)、每秒千兆包数 (G)、每秒兆兆包数 (T) 或每秒千兆兆包数 (P) 为单位来报告。在计算机可解析的输出中,此速率以每秒包数为单位来表示。–u 选项可用于为此数字指定固定单位。

EVENT

协议事件的名称。

操作数

支持下列操作数:

count

指定统计信息的重复次数。缺省情况下,tcpstat 会一直报告统计信息,直至收到一个终止信号。

interval

以秒为单位指定抽样间隔;缺省间隔是5秒。

退出状态

将返回以下退出值:

0

成功完成。

1

出现错误。

示例

示例 1 报告五个最活跃的通信流

以下命令报告最活跃的五个通信流。

$ ./tcpstat -l 5
ZONE            PID PROTO  SADDR            SPORT DADDR            DPORT   BYTES
global        28919 TCP    duff.cs.uni.edu  65398 adc-twvpn-1.orac   443   33.0 
zone1          6940 TCP    duff-dry.cs.uni.  6868 duff.cs.uni.edu  61318    8.0 
zone1          6940 TCP    duff.cs.uni.edu  61318 duff-dry.cs.uni.  6868    8.0 
global         8350 TCP    duff-dry.cs.uni.  6868 duff.cs.uni.edu  61318    8.0 
global         8350 TCP    duff.cs.uni.edu  61318 duff-dry.cs.uni.  6868    8.0 
Total: bytes in: 16.0  bytes out: 49.0 

示例 2 显示时间戳

以下命令报告最大通信流量同时显示标准日期格式的时间戳。新报告会在前一报告下方输出,间隔设置为十秒。

$ ./tcpstat -d d -c 10
Saturday, March 31, 2012 07:48:05 AM EDT
ZONE            PID PROTO  SADDR            SPORT DADDR            DPORT   BYTES
global         2372 TCP    heineken.splat.u 58094 rmdc-proxy.oracl    80   37.0 
zone1          6940 TCP    duff-dry.cs.uni.  6868 duff.cs.uni.edu  61318    8.0 
zone1          6940 TCP    duff.cs.uni.edu  61318 duff-dry.cs.uni.  6868    8.0 
global         8350 TCP    duff-dry.cs.uni.  6868 duff.cs.uni.edu  61318    8.0 
global         8350 TCP    duff.cs.uni.edu  61318 duff-dry.cs.uni.  6868    8.0 
Total: bytes in: 16.0  bytes out: 53.0
示例 3 指定 DTrace 运行时选项

以下命令将 DTrace 运行时选项 aggsize 设置为 1K。由于此大小对于所收集的数据来说过小,因此会显示一条错误,指示数据已被删除。

$ ./tcpstat -x aggsize=1k -c 1
Please wait...
ZONE            PID PROTO  SADDR            SPORT DADDR            DPORT   BYTES
zone1          6940 TCP    duff.cs.uni.edu  61318 duff-dry.cs.uni.  6868    8.0 
global         8350 TCP    duff-dry.cs.uni.  6868 duff.cs.uni.edu  61318    8.0 
global         8350 TCP    duff.cs.uni.edu  61318 duff-dry.cs.uni.  6868    8.0 
Data dropped.  Consider using '-x aggsize=2k' option.
Total: bytes in:  0.0  bytes out:  0.0 
示例 4 生成计算机可解析的输出

以下命令按一秒间隔显示数据,采用计算机可解析的格式,并显示 Unix 格式时间戳。

$ ./tcpstat -d u -m 1
timestamp:1333144286
global:TCP:2372:adc-proxy.oracle.com:80:harp.blat.uni.edu:44403:21083
global:TCP:2372:adc-proxy.oracle.com:80:harp.blat.uni.edu:59012:3136
global:TCP:2372:adc-proxy.oracle.com:80:harp.blat.uni.edu:37122:925
global:TCP:2372:harp.blat.uni.edu:59012:adc-proxy.oracle.com:80:670
global:TCP:2372:adc-proxy.oracle.com:80:harp.blat.uni.edu:64848:478
global:TCP:2372:adc-proxy.oracle.com:80:harp.blat.uni.edu:43355:425
global:TCP:2372:harp.blat.uni.edu:37122:adc-proxy.oracle.com:80:414
global:TCP:2372:harp.blat.uni.edu:44403:adc-proxy.oracle.com:80:403
zone1:TCP:6940:duff-dry.cs.uni.edu:6868:duff.cs.uni.edu:61318:8
zone1:TCP:6940:duff.cs.uni.edu:61318:duff-dry.cs.uni.edu:6868:8
global:TCP:8350:duff-dry.cs.uni.edu:6868:duff.cs.uni.edu:61318:8
global:TCP:8350:duff.cs.uni.edu:61318:duff-dry.cs.uni.edu:6868:8
total:TCP:26063:1503
timestamp:1333144287
zone1:TCP:6940:duff-dry.cs.uni.edu:6868:duff.cs.uni.edu:61318:8
zone1:TCP:6940:duff.cs.uni.edu:61318:duff-dry.cs.uni.edu:6868:8
global:TCP:8350:duff-dry.cs.uni.edu:6868:duff.cs.uni.edu:61318:8
global:TCP:8350:duff.cs.uni.edu:61318:duff-dry.cs.uni.edu:6868:8
total:16:16
示例 5 报告与 TCP 相关的包错误事件

以下命令可报告 TCP 包错误事件。新报告会在前一报告下方输出,间隔设置为十秒。

$ ./tcpstat -e -T tcp -c 10
ZONE         PID PROTO  SADDR            SPORT DADDR  DPORT  ERR-PKTS           EVENT
global    100574 TCP    dhcp-santaclara1 59198 impel     22         1       tcpInErrs
global    100574 TCP    impel               22 agnew     22         1 tcpAttemptFails
Total packets: 2
示例 6 报告所有 TCP 和 UDP 事件

以下命令可报告所有 TCP 和 UDP 事件的通信流。

$ ./tcpstat -E all
ZONE         PID PROTO  SADDR             SPORT DADDR             DPORT  PKTS           EVENT
global    100519 TCP    x4600m2-sfb-01.u  35688 impel                22     1    tcpRttUpdate
global    100519 TCP    x4600m2-sfb-01.u  35688 impel                22     1    tcpInAckSegs
global    100519 TCP    impel                22 x4600m2-sfb-01.u  35688     1  tcpOutDataSegs
global    100485 UDP    10.5.238.52       58711 10.255.255.255      111     1       udpInData
Total packets: 4
示例 7 报告与 TCP 相关的事件
$ ./tcpstat -E all -T udp -n
ZONE       PID PROTO SADDR          SPORT  DADDR          DPORT  PKTS            EVENT
global  100519 TCP   10.132.148.89  39443  10.134.71.92      22     5 tcpInInorderSegs
global  100519 TCP   10.132.148.89  39443  10.134.71.92      22     1     tcpInAckSegs
global  100519 TCP   10.132.148.89  39443  10.134.71.92      22     1     tcpRttUpdate
global  100519 TCP   10.134.71.92      22  10.132.148.8   39443     4        tcpOutAck
global  100519 TCP   10.134.71.92      22  10.132.148.89  39443     1   tcpOutDataSegs
Total packets: 12

属性

有关下列属性的说明,请参见 attributes(7)

属性类型
属性值
可用性
system/core-os

另请参见

dtrace(8)ipstat(8)netstat(8)

附注

显示的数据并不是抽样数据。这些值表示网络通信流量的准确计数。如果数据被删除,则会显示一条错误消息予以指示。