Please enable Javascript to view the contents

Linux网络-命令: netstat

 ·  ☕ 2 分钟

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 显示进程信息

1
netstat -atnp

2.2 刷新查看网络状态

-n 不进行dns解析 -a 所有连接 -c 持续回显网络状态,间隔 5 秒。

1
netstat -anc

2.3 查看路由信息

查看主机的路由表、了解数据包的路由路径

1
netstat -r

2.4 查看协议统计信息

1
netstat -s

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 是一个功能强大的网络监控工具,广泛应用于系统管理员和网络工程师的日常工作中。通过灵活运用不同的参数,可以轻松获取所需的网络状态信息,从而更好地进行故障排除和性能优化。

分享

Hex
作者
Hex
CloudNative Developer

目录