netstat 技巧和窍门

netstat 技巧和窍门

与“有用的命令行”问题类似(对于视窗Linux, 和苹果),我认为有“使用实用程序 x 的有用方法”问题会很方便。手册页会告诉您参数的作用,但不一定告诉您为什么要使用它们、结果意味着什么、命令做了哪些有用的事情(如果不进行大量实验,您永远不会知道),或者如何获得您真正想要的答案。

我想知道网络状态。看来我应该能够确定哪些进程正在使用带宽,以及系统使用带宽的速度。它对于检测不需要的连接(可能是病毒)也很有用,并且它提供了各种路由信息(我只有在尝试让 Sharp Zaurus PDA 通过 USB 使用 TCP/IP 时才需要使用这些信息。)换句话说,这听起来像是一个金矿,我希望你们中的一些人能分享你们发现的信息。

请在回复中包含 netstat 的版本和您的操作系统。如果能看到一些示例输出并了解其含义,那就太好了。我已将此问题标记为社区 wiki,希望您在回答中也这样做,以便其他了解不同操作系统的人可以在同一个答案中写下他们知道的近似等效命令,然后我们可以投票选出哪些答案最有用。

答案1

显示本地监听的 TCP/UDP 端口,以及它们所属的进程:

sudo netstat -tulpn

答案2

Netstat 路由表

[已在 Mac OS X 10.5.7 上进行了测试。我怀疑结果在所有平台上都几乎相同,因为它被指示可以在 Solaris 上运行。]

netstat -r 

将为您提供一个路由表。

netstat -nr

是一样的,但会给你原始 IP,而不是查找机器名称。其输出如下所示(只是更长):

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.40.250     UGSc       19        1    en1
127                127.0.0.1          UCS         0        0    lo0
127.0.0.1          127.0.0.1          UH          1     3140    lo0
169.254            link#5             UCS         0        0    en1
169.254.33.92      127.0.0.1          UHS         0        0    lo0
192.168.40         link#5             UCS        11        0    en1
192.168.40.1       0:17:f2:ca:a0:94   UHLW        0        0    en1   1150
...

Internet6:
Destination                             Gateway                         Flags      Netif Expire
::1                                     link#1                          UHL         lo0
fe80::%lo0/64                           fe80::1%lo0                     Uc          lo0
fe80::1%lo0                             link#1                          UHL         lo0
fe80::%en0/64                           link#4                          UC          en0
...
ff02::/32                               link#7                          UC          en2
ff02::/32                               link#8                          UC          en3

列:

目的地和网关: 目的地是我们可能想要发送信息的地址(或地址范围)。发送到该目的地的所有数据都将发送到关联的网关。网关知道在旅程中的下一个“跳跃”中将数据发送到哪里。如果我们希望将数据发送到路由表中没有条目的目的地,它将通过默认网关。

标志: man/info 页面列出了所有标志。以下是我的默认网关上的设置的含义:

UGSc
U       - RTF_UP           Route usable
 G      - RTF_GATEWAY      Destination requires forwarding by intermediary
  S     - RTF_STATIC       Manually added
   c    - RTF_PRCLONING    Protocol-specified generate new routes on use

奇怪的是,它声称是手动添加的,因为它是通过 DHCP 发送的。

参考文献:“refcnt 字段给出了路由的当前活动使用次数。面向连接的协议通常在连接期间保留一条路由,而无连接协议在发送到同一目的地时获得一条路由。”(手册页)

使用:“使用字段提供了使用该路由发送的数据包数量。”

网络:“接口条目指示用于路由的网络接口。”

在我的 Mac 上,

  • lo0 是环回接口。
  • en0 是以太网。
  • en1 是无线的。
  • en2 和 en3 由虚拟机使用。

到期:来自不同版本的 netstat 的手册页:“显示路由到期前剩余的时间(以分钟为单位)。”

答案3

查看CommandLineFu 的 Netstat 页面了解在 bash 中使用 netstat 的一些有用方法。

答案4

传输/接收速率

在Mac [OS X 10.5.7]上:

netstat -i -w 10

[看chuck 的回答有关在 Solaris 和 Linux 上使用的说明。

输出如下:

            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
       794     0    1166796        763     0      50358     0
       789     0    1167773        765     0      52542     0
       792     0    1166548        765     0      51174     0
       796     0    1167262        598     0      40152     0
       929     0    1278561        846     0      65625     0
       563     0     815570        530     0      36828     0
        32     0       4360          1     0        774     0
         9     0        705          0     0        684     0
         9     0        631          0     0          0     0

这显示了在给定时间间隔内传输了多少数据包和字节。(本例中为 10 秒)。我连接到 youtube 并且每个间隔下载超过 1 MB,直到我关闭浏览器选项卡并且速率降至最低。

如果您正在等待上传或下载完成,这可能会很有用。监控速率,当速率急剧下降时,您就知道上传或下载已完成。

请注意,上述命令会显示所有接口上的所有吞吐量。要将其范围限定到特定接口(本例中为 WiFi),请使用标志-I,如下所示:

netstat -I en1 -w 10

相关内容