Linux中netstat命令的使用

Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字

常见参数

  • -a, --all 列出所有连接,netstat 默认不显示 LISTEN 相关
  • -t, --tcp 只列出 TCP 的连接
  • -u, --udp 只列出 UDP 的连接
  • -n, --numeric 禁用对域名、主机名、端口名的反向解析,能显示数字的全部转化成数字
  • -l, --listening 仅列出有在 Listen (监听) 的服务状态,不要使用 -a 选项,否则会列出所有连接,而不仅仅是监听端口
  • -p, --program 获取进程名、进程ID
  • -r, --route , 显示路由信息,路由表
  • -e, --extend 显示扩展信息,例如 uid 等
  • -s, --statistics 按各个协议进行统计 (重要)
  • -c, --continuous 每隔一个固定时间,执行该netstat命令

常用示例

列出所有端口,不显示域名、主机名、端口名

1
2
netstat -ant  # 列出所有 tcp 端口
netstat -anu # 列出所有 udp 端口:

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

1
2
3
4
netstat -l   # 只显示监听端口
netstat -lt # 只列出所有监听 tcp 端口
netstat -lu # 只列出所有监听 udp 端口
netstat -lx # 只列出所有监听 UNIX 端口

显示每个协议的统计信息

1
2
3
netstat -s   # 显示所有协议的统计信息
netstat -st # 显示 tcp 协议的统计信息
netstat -su # 显示 udp 协议的统计信息

显示 PID 和进程名称

1
2
3
4
5
6
7
8
9
10
11
[root@study ~]$ netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 24172/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1406/master
tcp6 0 0 :::22 :::* LISTEN 24172/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1406/master
udp 0 0 127.0.0.1:323 0.0.0.0:* 509/chronyd
udp 0 0 0.0.0.0:68 0.0.0.0:* 607/dhclient
udp6 0 0 ::1:323 :::* 509/chronyd
[root@study ~]#

不显示域名、主机名、端口名

1
2
3
4
5
6
netstat -an

# 如果只是不想让这三个名称中的一个被显示,使用以下命令
netstat -a --numeric-ports
netstat -a --numeric-hosts
netstat -a --numeric-users

持续输出 netstat 信息

1
netstat -antp -c 2  # netstat 将每隔一秒输出网络信息

显示核心路由信息

1
netstat -rn

显示网络接口列表

1
2
3
4
5
6
7
8
9
[user1@study ~]$ netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 21443 0 0 0 11674 0 0 0 BMRU
eth1 1500 69 0 0 0 0 0 0 0 BMRU
eth2 1500 69 0 0 0 0 0 0 0 BMRU
eth3 1500 69 0 0 0 0 0 0 0 BMRU
lo 65536 0 0 0 0 0 0 0 0 LRU
[user1@study ~]$
有钱任性,请我吃包辣条
0%