Linux中使用netstat命令的基本操作
云服务器问题 2022-07-11 17:16 3980

Linux中netstat命令详解

Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

linux上面排查某个端口号是否被占用

1.netstat -anp |grep 端口号

如下,我以3306为例,netstat -anp |grep 3306(此处备注下,我是以普通用户操作,故加上了sudo,如果是以root用户操作,不用加sudo即可查看)

img

主要看监控状态为LISTEN表示已经被占用,最后一列显示被服务mysqld占用,查看具体端口号,只要有如图这一行就表示被占用了。

2.netstat -nultp(此处不用加端口号)

该命令是查看当前所有已经使用的端口情况:

img

可以看出我的82端口没有被占用

3.netstat -anp |grep 82查看82端口的使用情况

img

可以看出并没有LISTEN那一行,所以就表示没有被占用。此处注意,图中显示的LISTENING并不表示端口被占用,不要和LISTEN混淆哦,查看具体端口时候,必须要看到tcp,端口号,LISTEN那一行,才表示端口被占用了

下面是一些常用的命令 常见参数

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

1、列出所有的连接(包括监听和未监听的) netstat -a

$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 enlightened:domain     *:*                     LISTEN    
tcp        0      0 localhost:ipp           *:*                     LISTEN    
tcp        0      0 enlightened.local:54750 li240-5.members.li:http ESTABLISHED
tcp        0      0 enlightened.local:49980 del01s07-in-f14.1:https ESTABLISHED
tcp6       0      0 ip6-localhost:ipp       [::]:*                 LISTEN    
udp        0      0 enlightened:domain     *:*                                
udp        0      0 *:bootpc               *:*                                
udp        0      0 enlightened.local:ntp   *:*                                
udp        0      0 localhost:ntp           *:*                                
udp        0      0 *:ntp                   *:*                                
udp        0      0 *:58570                 *:*                                
udp        0      0 *:mdns                 *:*                                
udp        0      0 *:49459                 *:*                                
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                            
udp6       0      0 ip6-localhost:ntp       [::]:*                            
udp6       0      0 [::]:ntp               [::]:*                            
udp6       0      0 [::]:mdns               [::]:*                            
udp6       0      0 [::]:63811             [::]:*                            
udp6       0      0 [::]:54952             [::]:*                            
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2     [ ACC ]     STREAM     LISTENING     12403   @/tmp/dbus-IDgfj3UGXX
unix  2     [ ACC ]     STREAM     LISTENING     40202   @/dbus-vfs-daemon/socket-6nUC6CCx

上述命令会列出tcp,udp和unix协议下所有套接字的所有连接。

2、只列出tcp和udp协议的连接。

使用-at选项查看tcp协议的连接

$ netstat -at

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 enlightened:domain     *:*                     LISTEN    
tcp        0      0 localhost:ipp           *:*                     LISTEN    
tcp        0      0 enlightened.local:36310 del01s07-in-f24.1:https ESTABLISHED
tcp        0      0 enlightened.local:45038 a96-17-181-10.depl:http ESTABLISHED
tcp        0      0 enlightened.local:37892 ABTS-North-Static-:http ESTABLISHED
.....

使用-au选项使用udp协议的连接:

# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
udp        0      0 *:34660                 *:*                                
udp        0      0 enlightened:domain     *:*                                
udp        0      0 *:bootpc               *:*                                
udp        0      0 enlightened.local:ntp   *:*                                
udp        0      0 localhost:ntp           *:*                                
udp        0      0 *:ntp                   *:*                                
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                            
udp6       0      0 ip6-localhost:ntp       [::]:*                            
udp6       0      0 [::]:ntp               [::]:*

上面同时显示了 IPv4 和 IPv6 的连接。

3、禁用反向域名,加快查询的速度

默认情况下netstat会通过反向域名解析技术查找每个ip地址对应的主机名。这会降低查找的速度,如果你觉得iop地址已经足够,而没有必要知道主机名,就使用-n选项禁用域名解析功能。

$ netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN    
tcp        0      0 192.168.1.2:49058       173.255.230.5:80       ESTABLISHED
tcp        0      0 192.168.1.2:33324       173.194.36.117:443     ESTABLISHED

Label:

  • Linux系统使用 netstat 查看和检查系统端口占用情况