netstat 是一个用于显示网络连接、路由表和网络统计信息的命令行工具。它可以帮助你查看当前系统中的网络状态,如已建立的连接、监听端口、路由表等。
netstat [options]
-a
:显示所有连接和监听端口。-r
:显示系统路由表信息。-n
:以数字形式显示地址和端口号,而不使用域名和服务名称。-p
:显示与连接关联的进程信息,包括进程 ID(PID)和进程名称(COMMAND)。-l
:仅显示监听状态的连接。-t
:仅显示 TCP 协议的连接。-u
:仅显示 UDP 协议的连接。-w
:仅显示原始套接字连接。-x
:显示 Unix 域套接字连接。-c
:持续输出信息,每隔一段时间自动刷新显示。可以通过 Ctrl+C 终止。-e
:显示扩展信息,包括 UID、GID、Inode 等。-F
:使用指定的输出格式进行显示。-o
:显示计时器信息。-C
:指定配置文件路径。-E
:设置扩展匹配模式。-f
:显示指定进程相关的连接信息。-g
:显示多播组信息。-h
:显示帮助信息。-i
:显示指定接口相关的连接信息。-M
:显示多播的源和接收者信息。-N
:设置输出地址和服务名称时使用数字格式。-O
:设置输出格式。-s
:显示各种统计信息。-V
:显示版本信息。netstat -a
这会显示系统中的所有网络连接和正在监听的端口。
示例输出:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:631 *:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:631 [::]:* LISTEN
netstat -at
这会显示所有当前的 TCP 连接,包括本地地址和外部地址。
示例输出:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:631 *:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:631 [::]:* LISTEN
netstat -au
这会显示所有当前的 UDP 连接,包括本地地址和外部地址。
示例输出:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:bootpc *:*
udp 0 0 *:mdns *:*
netstat -l
这会显示当前系统上处于监听状态的端口。
示例输出:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:631 *:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:631 [::]:* LISTEN
netstat -r
这会显示当前系统的路由表信息,包括目标地址、网关、接口和标志等。
示例输出:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
netstat -p
这会显示每个连接所关联的进程 ID(PID)和进程名称。
示例输出:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:631 *:* LISTEN 1234/cupsd
tcp6 0 0 [::]:ssh [::]:* LISTEN 5678/sshd
tcp6 0 0 ip6-localhost:631 [::]:* LISTEN 1234/cupsd
netstat -n
这会以数字形式显示地址和端口号,而不使用域名和服务名称。
示例输出:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
netstat -e
这会显示与连接关联的扩展信息,如 UID、GID、Inode 等。
示例输出:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 localhost:631 *:* LISTEN 1234 56789 1234/cupsd
tcp6 0 0 [::]:ssh [::]:* LISTEN 5678 98765 5678/sshd
tcp6 0 0 ip6-localhost:631 [::]:* LISTEN 1234 56789 1234/cupsd
netstat -an | grep <port>
这会查找并显示指定端口是否被占用。
示例输出:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
```
netstat -ap | grep <port>
```
这会查找并显示使用指定端口的进程信息。
示例输出:
```
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 5678/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1234/cupsd
tcp6 0 0 :::22 :::* LISTEN 5678/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1234/cupsd
```
```
netstat -s
```
这会统计传输层和网络层的数据包、错误、丢失等信息。
示例输出:
```
Ip:
12345 total packets received
67890 with invalid addresses
1234 forwarded
56789 incoming packets discarded
98765 incoming packets delivered
Tcp:
12345 active connections openings
67890 passive connection openings
1234 failed connection attempts
56789 connection resets received
98765 connections established
```
```
netstat -c
```
这会持续输出当前系统中的所有网络连接状态,每隔一段时间自动刷新显示。
示例输出:
```
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:631 *:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:631 [::]:* LISTEN
```
```
netstat -i <interface>
```
这会显示指定网络接口相关的连接信息。
示例输出:
```
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 12345 0 0 0 67890 0 0 0 BMRU
```
```
netstat -lt
```
这会显示正在监听状态的 TCP 端口以及与之关联的进程信息。
示例输出:
```
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:631 *:* LISTEN 1234/cupsd
tcp6 0 0 [::]:ssh [::]:* LISTEN 5678/sshd
tcp6 0 0 ip6-localhost:631 [::]:* LISTEN 1234/cupsd
```
```
netstat -tup
```
这会显示所有 TCP 和 UDP 连接的详细信息,包括本地地址、外部地址、状态和进程信息。
示例输出:
```
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:631 *:* LISTEN 1234/cupsd
tcp6 0 0 [::]:ssh [::]:* LISTEN 5678/sshd
tcp6 0 0 ip6-localhost:631 [::]:* LISTEN 1234/cupsd
```
```
netstat -o
```
这会显示与网络连接关联的计时器信息,如定时器状态和持续时间。
示例输出:
```
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State Timer
tcp 0 0 localhost:631 *:* LISTEN timewait (0.00/0/0)
tcp6 0 0 [::]:ssh [::]:* LISTEN timewait (0.00/0/0)
tcp6 0 0 ip6-localhost:631 [::]:* LISTEN timewait (0.00/0/0)
```
```
netstat -p <pid>
```
这会显示指定进程 ID(PID)相关的连接信息。
示例输出:
```
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:631 *:* LISTEN 1234/cupsd
tcp6 0 0 [::]:ssh [::]:* LISTEN 5678/sshd
tcp6 0 0 ip6-localhost:631 [::]:* LISTEN 1234/cupsd
```
```
netstat -g
```
这会显示当前系统中的多播组信息。
示例输出:
```
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 all-systems.mcast.net
eth0 1 all-systems.mcast.net
```