Linux查看端口占用netstat命令详解

Linux netstat命令详解教程

Linux 中的 netstat 命令用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat 是在内核中访问网络及相关信息的程序,它能提供 TCP 连接,TCP 和 UDP 监听,进程内存管理的相关报告。

Linux netstat命令详解

功能

显示各种网络相关信息。

语法

netstat [OPTION]

参数

选项 功能
OPTION netstat 命令使用的参数。

netstat命令常用参数

选项 功能
-a, –all 显示所有连线中的 Socket。
-A<网络类型>, –<网络类型> 列出该网络类型连线中的相关地址。
-c, –continuous 持续列出网络状态。
-C, -–cache 显示路由器配置的快取信息。
-e, –-extend 显示网络其他相关信息。
-F, –-fib 显示 FIB。
-g, –-groups 显示多重广播功能群组组员名单。
-i, –-interfaces 显示网络界面信息表单。
-l, -–listening 显示监控中的服务器的 Socket。
-M, -–masquerade 显示伪装的网络连线。
-n, -–numeric 直接使用 IP 地址,而不通过域名服务器。
-N, -–netlink, -–symbolic 显示网络硬件外围设备的符号连接名称。
-o, -–timers 显示计时器。
-p, -–programs 显示正在使用 Socket 的程序识别码和程序名称。
-r, -–route 显示 Routing Table。
-s, -–statistice 显示网络工作信息统计表。
-t, -–tcp 显示 TCP 传输协议的连线状况。
-u, -–udp 显示 UDP 传输协议的连线状况。
-v, –-verbose 显示指令执行过程。
-w, –-raw 显示 RAW 传输协议的连线状况。
-x, –-unix 此参数的效果和指定 ”-A unix” 参数相同。
–ip, -–inet 此参数的效果和指定 ”-A inet” 参数相同。

Linux netstat命令常用实例

实例

实例 描述
netstat 查看网络情况。
netstat -a 列出所有端口。
netstat -nu 显示当前 UDP 连接状况。
netstat -apu 显示 UDP 端口号的使用情况。
netstat -i 显示网卡列表。
netstat -g 显示组播组的关系。
netstat -s 显示网络统计信息。
netstat -l 显示监听的套接口。
netstat -n 显示所有已建立的有效连接。
netstat -r 显示关于路由表的信息。
netstat -at 列出所有 tcp 端口。
netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 统计机器中网络连接各个状态个数。
netstat -ap | grep ssh 找出程序运行的端口。
netstat -anpt | grep ':16064' 找出运行在指定端口的进程。

状态说明

状态 描述
LISTEN 侦听来自远方的 TCP 端口的连接请求。
SYN-SENT 再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)。
SYN-RECEIVED 再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被 flood 攻击了)。
ESTABLISHED 代表一个打开的连接。
FIN-WAIT-1 等待远程 TCP 连接中断请求,或先前的连接中断请求的确认。
FIN-WAIT-2 从远程 TCP 等待连接中断请求。
CLOSE-WAIT 等待从本地用户发来的连接中断请求。
CLOSING 等待远程 TCP 对连接中断的确认。
LAST-ACK 等待原来的发向远程 TCP 的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)。
TIME-WAIT 等待足够的时间以确保远程 TCP 接收到连接中断请求的确认。
CLOSED 没有任何连接状态。

说明

从整体上看,netstat 的输出结果可以分为两个部分:

一个是 Active Internet connections,称为有源 TCP 连接,其中 “Recv-Q” 和 “Send-Q” 指的是接收队列和发送队列。这些数字一般都应该是 0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是 Active UNIX domain sockets,称为有源 Unix 域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

Proto 显示连接使用的协议,RefCnt 表示连接到本套接口上的进程号,Types 显示套接口的类型,State 显示套接口当前的状态,Path 表示连接到套接口的其它进程使用的路径名。

查看网络情况

语法

netstat

案例

我们使用 netstat 命令,查看网络情况,具体命令如下:

netstat

运行后,终端输出如下:

06_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令列出了网络情况。

列出所有端口

语法

netstat -a

案例

我们使用 netstat 命令,列出所有端口,具体命令如下:

netstat -a

运行后,终端输出如下:

07_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令列出了所有端口。

显示UDP连接

语法

netstat -nu

案例

我们使用 netstat 命令,显示 UDP 连接信息,具体命令如下:

netstat -nu

运行后,终端输出如下:

08_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令显示了 UDP 连接信息。

显示UDP端口使用

语法

netstat -apu

案例

我们使用 netstat 命令,显示 UDP 连接信息,具体命令如下:

netstat -apu

运行后,终端输出如下:

09_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令显示了 UDP 端口使用信息。

显示网卡列表

语法

netstat -i

案例

我们使用 netstat 命令,显示网卡列表,具体命令如下:

netstat -i

运行后,终端输出如下:

10_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令显示了网卡列表。

显示组播组关系

语法

netstat -g

案例

我们使用 netstat 命令,显示组播组关系,具体命令如下:

netstat -g

运行后,终端输出如下:

11_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令显示组播组关系。

显示组播组关系

语法

netstat -g

案例

我们使用 netstat 命令,显示组播组关系,具体命令如下:

netstat -g

运行后,终端输出如下:

12_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令显示组播组关系。

显示网络统计信息

语法

netstat -s

案例

我们使用 netstat 命令,显示网络统计信息,具体命令如下:

netstat -s

运行后,终端输出如下:

13_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令显示网络统计信息。

显示监听的端口

语法

netstat -l

案例

我们使用 netstat 命令,显示监听的端口,具体命令如下:

netstat -l

运行后,终端输出如下:

14_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令显示了监听的端口。

显示所有已建立的有效连接

语法

netstat -n

案例

我们使用 netstat 命令,显示所有已建立的有效连接,具体命令如下:

netstat -n

运行后,终端输出如下:

15_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令显示所有已建立的有效连接。

显示路由信息

语法

netstat -r

案例

我们使用 netstat 命令,显示路由表信息,具体命令如下:

netstat -r

运行后,终端输出如下:

16_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令显示了路由表信息。

显示所有tcp端口

语法

netstat -at

案例

我们使用 netstat 命令,显示所有 tcp 端口,具体命令如下:

netstat -at

运行后,终端输出如下:

17_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令显示了所有 tcp 端口信息。

查看程序运行的端口

语法

netstat -ap | grep ssh

案例

我们使用 netstat 命令,查看程序运行的端口,具体命令如下:

netstat -ap | grep ssh

运行后,终端输出如下:

18_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令查看了 ssh 的端口。

查看端口占用

语法

netstat -anpt | grep ':16064'

案例

我们使用 netstat 命令,查看程序运行的端口,具体命令如下:

netstat -anpt | grep ':22'

运行后,终端输出如下:

19_Linux netstat命令详解.png

我们看到,我们使用了 netstat 命令查看了占用 22 端口的进程。

Linux netstat命令详解总结

Linux 中的 netstat 命令用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

netstat 是在内核中访问网络及相关信息的程序,它能提供 TCP 连接,TCP 和 UDP 监听,进程内存管理的相关报告。