linux mysql 监听端口被占用_Linux中使用netstat命令的基本操作,排查端口号的占用情况...

本文详细介绍了Linux系统中如何使用netstat命令来检查端口占用情况,包括如何查看特定端口是否被占用,以及常用参数的解释。通过netstat -anp | grep 端口号,netstat -nultp等命令可以确定端口的状态,并通过-P选项获取占用进程的信息。同时,文章还展示了如何查看所有连接、监听状态的套接字以及网络统计数据等相关操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux中netstat命令详解

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

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

1.netstat  -anp  |grep   端口号

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

c956f727203fc7fc08ef6e01599169f0.png

图1

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

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

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

5b10d8c7cfe77503d8f6bf451d2db327.png

图2

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

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

5c84c44793ea26ec989130f696ca4013.png

图3

可以看出并没有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

tcp0 0 enlightened:domain *:*LISTEN

tcp0 0 localhost:ipp *:*LISTEN

tcp0 0 enlightened.local:54750 li240-5.members.li:http ESTABLISHED

tcp0 0 enlightened.local:49980 del01s07-in-f14.1:https ESTABLISHED

tcp60 0 ip6-localhost:ipp [::]:*LISTEN

udp0 0 enlightened:domain *:*udp0 0 *:bootpc *:*udp0 0 enlightened.local:ntp *:*udp0 0 localhost:ntp *:*udp0 0 *:ntp *:*udp0 0 *:58570 *:*udp0 0 *:mdns *:*udp0 0 *:49459 *:*udp60 0 fe80::216:36ff:fef8:ntp [::]:*udp60 0 ip6-localhost:ntp [::]:*udp60 0 [::]:ntp [::]:*udp60 0 [::]:mdns [::]:*udp60 0 [::]:63811 [::]:*udp60 0 [::]:54952 [::]:*Active UNIX domain sockets (servers and established)

Proto RefCnt Flags Type State I-Node Path

unix2 [ ACC ] STREAM LISTENING 12403 @/tmp/dbus-IDgfj3UGXX

unix2 [ 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

tcp0 0 enlightened:domain *:*LISTEN

tcp0 0 localhost:ipp *:*LISTEN

tcp0 0 enlightened.local:36310 del01s07-in-f24.1:https ESTABLISHED

tcp0 0 enlightened.local:45038 a96-17-181-10.depl:http ESTABLISHED

tcp0 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

udp0 0 *:34660 *:*udp0 0 enlightened:domain *:*udp0 0 *:bootpc *:*udp0 0 enlightened.local:ntp *:*udp0 0 localhost:ntp *:*udp0 0 *:ntp *:*udp60 0 fe80::216:36ff:fef8:ntp [::]:*udp60 0 ip6-localhost:ntp [::]:*udp60 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

tcp0 0 127.0.1.1:53 0.0.0.0:*LISTEN

tcp0 0 127.0.0.1:631 0.0.0.0:*LISTEN

tcp0 0 192.168.1.2:49058 173.255.230.5:80ESTABLISHED

tcp0 0 192.168.1.2:33324 173.194.36.117:443ESTABLISHED

tcp60 0 ::1:631 :::* LISTEN

4、列出所有处于监听状态的 Sockets

只显示监听端口 netstat -l

# netstat -l

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 localhost:ipp *:* LISTEN

tcp6 0 0 localhost:ipp [::]:* LISTEN

udp 0 0 *:49119 *:*

只列出所有监听 tcp 端口 netstat -lt

# netstat -lt

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 localhost:30037 *:* LISTEN

tcp 0 0 *:smtp *:* LISTEN

tcp6 0 0 localhost:ipp [::]:* LISTEN

只列出所有监听 udp 端口 netstat -lu

# netstat -lu

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

udp 0 0 *:49119 *:*

udp 0 0 *:mdns *:*

只列出所有监听 UNIX 端口 netstat -lx

# netstat -lx

Active UNIX domain sockets (only servers)

Proto RefCnt Flags Type State I-Node Path

unix 2 [ ACC ] STREAM LISTENING 6294 private/maildrop

unix 2 [ ACC ] STREAM LISTENING 6203 public/cleanup

unix 2 [ ACC ] STREAM LISTENING 6302 private/ifmail

unix 2 [ ACC ] STREAM LISTENING 6306 private/bsmtp

5、获取进程名、进程号以及用户ID

查看端口和连接的信息时,能查看到他们对应的进程名和进程号对系统管理员来说是非常有帮助的。举个栗子,Apache的httpd服务开启80端口,如果要查看http服务是否已经启动,或者http服务是由apache还是nginx启动的,这时候你可以看看进程号。

使用-p选项查看进程信息

~$ sudo netstat -nlpt

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1144/dnsmasq

tcp0 0 127.0.0.1:631 0.0.0.0:* LISTEN 661/cupsd

tcp60 0 ::1:631 :::* LISTEN 661/cupsd

使用-p选项时,netstat必须运行在root权限之下,不然他就不能得到运行在root权限下的进程名,而很多服务包括http和ftp都运行在root权限之下。

相比进程名和进程号而言,查看进程的拥有者会更有用。使用-ep选项可以同时查看进程名和用户名。

$ sudo netstat -ltpe

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name

tcp0 0 enlightened:domain *:* LISTEN root 11090 1144/dnsmasq

tcp0 0 localhost:ipp *:* LISTEN root 9755 661/cupsd

tcp60 0 ip6-localhost:ipp [::]:* LISTEN root 9754 661/cupsd

上面列出tcp协议下的监听套接字,同时显示进程信息和一些额外的信息。

这些额外的信息包括用户名和进程的索引节点号。这个命令对网管来说很有用。

注意 – 假如你将 -n 和 -e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。

6、打印统计数据

netstat可以打印网络统计数据,包括某个协议的收发包数量。

下面列出所有网络的统计情况:

$ netstat -s

Ip:32797total packets received0forwarded0incoming packets discarded32795incoming packets delivered29115 requests sent out

60outgoing packets dropped

Icmp:125ICMP messages received0input ICMP message failed.

ICMP input histogram:

destination unreachable:125

125ICMP messages sent0ICMP messages failed

ICMP output histogram:

destination unreachable:125... OUTPUT TRUNCATED ...

如果想只打印tcp或udp协议的统计数据,只要加上对应的选项(-t和-u)即可。

7、显示内核路由信息

使用-r选项打印内核路由信息。打印出来的信息与route命令输出的信息一样。我们可以使用-n选项禁止域名解析。

$ netstat -rn

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0eth0192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

8、打印网络接口

netstat也能打印网络接口信息,-i选项就是为这个功能而生。

$ netstat -i

Kernel Interface table

Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

eth01500 0 31611 0 0 0 27503 0 0 0BMRU

lo65536 0 2913 0 0 0 2913 0 0 0 LRU

上面输出的信息比较原始。我们将-e选项和-i选项搭配使用,可以输出用户友好的信息。

$ netstat -ie

Kernel Interface table

eth0 Link encap:Ethernet HWaddr00:16:36:f8:b2:64inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0inet6 addr: fe80::216:36ff:fef8:b264/64Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:31682 errors:0 dropped:0 overruns:0 frame:0TX packets:27573 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:29637117 (29.6 MB) TX bytes:4590583 (4.5MB)

Interrupt:18 Memory:da000000-da020000

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128Scope:Host

UP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:2921 errors:0 dropped:0 overruns:0 frame:0TX packets:2921 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:305297 (305.2 KB) TX bytes:305297 (305.2 KB)

上面的输出信息与ifconfig输出的信息一样。

9、netstat持续输出

我么可以使用netstat的-c选项持续输出信息。

$ netstat -ct

这个命令可以持续输出tcp协议信息。

10、显示多播组信息

选项-g会输出ipv4和ipv6的多播组信息

$ netstat -g

IPv6/IPv4 Group Memberships

Interface RefCnt Group--------------- ------ ---------------------lo1 all-systems.mcast.net

eth01 224.0.0.251eth01 all-systems.mcast.net

lo1 ip6-allnodes

lo1 ff01::1eth01ff02::fb

eth01 ff02::1:fff8:b264

eth01 ip6-allnodes

eth01 ff01::1wlan01 ip6-allnodes

wlan01 ff01::1

打印active 的状态连接

active状态的套接字连接用“ESTABLISHED”字段表示,所以我们可以使用grep命令获取active状态的连接:

$ netstat -atnp |grep ESTA

(Not all processes could be identified, non-owned process info

will not be shown, you would have to be root to see it all.)

tcp0 0 192.168.1.2:49156 173.255.230.5:80 ESTABLISHED 1691/chrome

tcp0 0 192.168.1.2:33324 173.194.36.117:443 ESTABLISHED 1691/chrome

配合watch命令监听active状态的连接:

$ watch -d -n0 "netstat -atnp | grep ESTA"

查看服务是否在运行

如果想看看http,smtp或ntp服务是否在运行,使用grep

$ sudo netstat -aple |grep ntp

udp0 0 enlightened.local:ntp *:* root 17430 1789/ntpd

udp0 0 localhost:ntp *:* root 17429 1789/ntpd

udp0 0 *:ntp *:* root 17422 1789/ntpd

udp60 0 fe80::216:36ff:fef8:ntp [::]:* root 17432 1789/ntpd

udp60 0 ip6-localhost:ntp [::]:* root 17431 1789/ntpd

udp60 0 [::]:ntp [::]:* root 17423 1789/ntpd

unix2 [ ] DGRAM 17418 1789/ntpd

11. IP和TCP分析

查看连接某服务端口最多的的IP地址

wss8848@ubuntu:~$ netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20

18 221.136.168.36

3 154.74.45.242

2 78.173.31.236

2 62.183.207.98

2 192.168.1.14

2 182.48.111.215

2 124.193.219.34

2 119.145.41.2

2 114.255.41.30

1 75.102.11.99

TCP各种状态列表

wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'

established)

Foreign

LISTEN

TIME_WAIT

ESTABLISHED

TIME_WAIT

SYN_SENT

先把状态全都取出来,然后使用uniq -c统计,之后再进行排序。

wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'|sort|uniq -c

143 ESTABLISHED

1 FIN_WAIT1

1 Foreign

1 LAST_ACK

36 LISTEN

6 SYN_SENT

113 TIME_WAIT

1 established)

最后的命令如下:

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn

分析access.log获得访问前10位的ip地址

awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值