Linux中的netstat命令详解

netstat是基于Netstat这个命令行工具的指令,它可以用来查询系统上的网络套接字连接情况,包括tcp,udp以及Unix套接字;另外它还能列出路由表,接口状态和多播成员等信息。关于netstat命令的选项有很多,本文只介绍常见选项。

主要选项

netstat命令的常见选项如图所示:

avatar

实例演示

1. netstat -a

列出所有的端口,包括监听的和未监听的。

2. netstat -at

列出所有的tcp协议的端口,包括监听的和未监听的。结果如下:

1
2
3
4
5
6
7
[root@renxiaoxiao ~]# netstat -at 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 52 renxiaoxiao:ssh 192.168.17.1:10231 ESTABLISHED
tcp6 0 0 [::]:mysql [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN

3. netstat -au

列出所有的UDP协议的端口,包括监听的和未监听的。结果如下:

1
2
3
4
5
[root@renxiaoxiao ~]# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 localhost:323 0.0.0.0:*
udp6 0 0 localhost:323 [::]:*

4. netstat -ap | grep ‘程序名’

找出程序运行的端口。

5. netstat -ap | grep ‘端口号’

找出端口的程序名。

6. netstat -nltp

查看所有tcp服务的所有程序名和进程PID。
禁止域名解析,这个主要netstat中的-n选项有关,先看不带n时所输出的结果:

1
2
3
4
5
6
7
8
9
10
[root@renxiaoxiao ~]# netstat -ltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:1024 *:* LISTEN 6130/./server
tcp 0 0 *:ssh *:* LISTEN 1800/sshd
tcp 0 0 localhost:ipp *:* LISTEN 1690/cupsd
tcp 0 0 localhost:smtp *:* LISTEN 1925/master
tcp 0 0 *:ssh *:* LISTEN 1800/sshd
tcp 0 0 localhost:ipp *:* LISTEN 1690/cupsd
tcp 0 0 localhost:smtp *:* LISTEN 1925/master

再来看看加上n 选项后的输入结果:

1
2
3
4
5
6
7
8
9
10
[root@renxiaoxiao ~]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:1024 0.0.0.0:* LISTEN 6130/./server
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1800/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1690/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1925/master
tcp 0 0 :::22 :::* LISTEN 1800/sshd
tcp 0 0 ::1:631 :::* LISTEN 1690/cupsd
tcp 0 0 ::1:25 :::* LISTEN 1925/master

可以发现在local address 即主机地址这一栏中,如果没有带n选项,会将套接字所对应的域名解析出来,如果加上n选项,那么就不会显示,即禁止域名解析的功能,这样做有助于提高查询速度,因为减少了对主机域名的查询。

7. netstat -c

动态查看netstat信息,每隔一段时间自动刷新。

8. netstat -r

显示路由表的信息。加n选项会禁用域名解析。

1
2
3
4
5
[root@renxiaoxiao ~]# netstat -nr 
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.17.2 0.0.0.0 UG 0 0 0 ens33
192.168.17.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33

9. netstat -i

查看接口信息。

1
2
3
4
5
[root@renxiaoxiao ~]# netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 1850 0 0 0 736 0 0 0 BMRU
lo 65536 0 0 0 0 0 0 0 0 LRU

10. netstat -sa

分类统计各个协议的相关信息。

坚持原创技术分享,您的支持将鼓励我继续创作!

------本文结束 感谢您的阅读------