1. 常用选项
-a
:显示所有连接,包括监听、非监听状态的连接。(比-l
优先级更高,同时存在时,显示所有连接)-l
:仅显示处于监听状态的套接字(比-a
优先级底)。-t
:仅显示 TCP 连接。-u
:仅显示 UDP 连接。-n
:以数字形式显示地址和端口号,不进行 DNS 解析。-p
:显示与每个连接关联的程序的 PID 和名称。需要超级用户权限。-r
:显示内核路由表。-s
:显示各个协议的统计信息。-c
:持续列出网络状态,每次刷新间隔默认为 5 秒。-e
:扩展输出,显示更详细的协议信息。-i
:显示网络接口的统计信息。
2. 使用举例
2.1 查看所有连接及其对应的进程
-n 不进行dns解析 -a 所有连接 -t tcp协议 -p 显示进程信息
2.2 刷新查看网络状态
-n 不进行dns解析 -a 所有连接 -c 持续回显网络状态,间隔 5 秒。
2.3 查看路由信息
查看主机的路由表、了解数据包的路由路径
2.4 查看协议统计信息
2.5 脚本 - 记录网络状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #!/bin/bash
# 网络状态记录器
log_network_status() {
local logfile="/var/log/network_status.log"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
{
echo "=== 网络状态于 $timestamp ==="
echo "监听端口:"
netstat -tulpn | grep LISTEN
echo "当前连接:"
netstat -ant | awk '{print $6}' | sort | uniq -c
echo "=================================="
} >> "$logfile"
}
# 调用函数记录网络状态
log_network_status
|
2.6 脚本 - 检查网络状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #!/bin/bash
# 检查网络状态
network_check() {
echo "1. 检查监听端口..."
sudo netstat -tulpn | grep LISTEN
echo "2. 检查已建立的连接..."
netstat -ant | grep ESTABLISHED | wc -l
echo "3. 检查连接状态..."
netstat -ant | awk '{print $6}' | sort | uniq -c
echo "4. 检查接口统计信息..."
netstat -i
}
# 调用函数进行检查
network_check
|
3. 结语
netstat 是一个功能强大的网络监控工具,广泛应用于系统管理员和网络工程师的日常工作中。通过灵活运用不同的参数,可以轻松获取所需的网络状态信息,从而更好地进行故障排除和性能优化。