小工具知识网

当前位置: 首页 > 行业知识 > netstat 命令详解

行业知识

netstat 命令详解

2026-11-08 09:19:52 来源:互联网转载

文章目录

    • 简介
    • 命令格式
    • 常用选项
    • 常用命令
      • 查询进程所占用的端口号
      • 查看端口号的使用情况
      • 显示所有连接和监听端口并显示每个连接相关的进程ID
      • 显示UDP、TCP协议的连接的统计信息并显示每个连接相关的进程 ID
      • 显示所有已建立的连接
      • 显示每个进程的连接数
      • 显示每个IP地址的连接数
      • 显示每种类型TCP/UDP的连接数
      • 显示每种网络状态的数量
      • 显示指定进程ID网络状态的数量
      • 显示端口占用数量
      • 显示指定进程ID指定协议的数量
      • ���络状态

        简介

        netstat 命令是 Linux 系统中一个非常常用的网络工具,用于查询和统计网络连接的状态和数据传输情况。在网络故障排除和性能调优中,netstat 命令是必不可少的工具之一。本文将详细介绍 netstat 命令的常用参数及其用法。

        ()

        命令格式

        netstat [-a] [-c] [-e] [-f] [-i] [-n] [-o] [-p protocol] [-r] [-s] [-t] [-u] [interval]

        常用选项

        netstat 命令的常用选项如下:

        ()
        • -a(all):显示所有连接状态,包括 TCP、UDP 和 Unix 域套接字;
          • -t(tcp):显示 TCP 连接状态;
          • -u(udp):显示 UDP 连接状态;
          • -x:列出所有unix端口
          • -c(continuous):连续显示网络状态信息。按 Ctrl + C 结束。
          • -e(extend):显示网络统计信息。包括网络接口、协议等。
          • -f:显示外部地址的完全限定域名(FQDN)。
          • -i:显示网络接口信息。
          • -n:以数字形式显示地址和端口号。
          • -o:显示与每个连接相关的进程 ID。
          • -p protocol:显示特定协议(tcp、udp 或 icmp)的连接。
          • -r:显示路由表。
          • -s:显示网络统计信息。包括网络接口、协议等。
          • -t:显示 TCP 协议的连接。
          • -u:显示 UDP 协议的连接。
          • interval:指定连续显示网络状态信息的时间间隔(单位为秒)。

            常用命令

            查询进程所占用的端口号

             netstat -ano | grep 进程ID

            查看端口号的使用情况

             netstat -ano | grep 端口号

            显示所有连接和监听端口并显示每个连接相关的进程ID

            netstat -ano

            显示UDP、TCP协议的连接的统计信息并显示每个连接相关的进程 ID

            netstat -so -p udpnetstat -so -p tcpIPv4 的 TCP 统计信息  主动开放                        = 8055  被动开放                       = 1136  失败的连接尝试          = 2469  重置连接                   = 1712  当前连接                 = 67  接收的分段                   = 2473796  发送的分段                       = 454254  重新传输的分段              = 10493活动连接  协议  本地地址          外部地址        状态           PID  TCP    127.0.0.1:6000         kubernetes:51683       ESTABLISHED     16460  TCP    127.0.0.1:6000         kubernetes:51684       ESTABLISHED     16460

            显示所有已建立的连接

            netstat -ano | grep ESTABLISHEDTCP    127.0.0.1:6000         127.0.0.1:51684        ESTABLISHED     16460TCP    127.0.0.1:6000         127.0.0.1:51685        ESTABLISHED     16460

            显示每个进程的连接数

            netstat -ano | grep ESTABLISHED | awk '{print }' | sort | uniq -c | sort -nr | head -10

            netstat -ano: 显示所有连接和监听端口,以数字形式显示地址和端口号,并显示与每个连接相关的进程 ID

              TCP    0.0.0.0:47001          0.0.0.0:0              LISTENING       4  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING       1044  TCP    127.0.0.1:4244         0.0.0.0:0              LISTENING       15104  TCP    127.0.0.1:6000         127.0.0.1:51683        ESTABLISHED     16460  TCP    127.0.0.1:6000         127.0.0.1:51685        ESTABLISHED     16460  ...  UDP    192.168.2.226:1900     *:*                                    10428  UDP    192.168.2.226:61395    *:*                                    10428  UDP    [::]:3702              *:*                                    15956  UDP    [::]:57584             *:*                                    15956  UDP    [::1]:1900             *:*                                    10428  UDP    [::1]:61392            *:*                                    10428  UDP    [fe80::b131:35eb:14b3:8958%50]:1900  *:*                                    10428

            grep ESTABLISHED :过滤出已建立的连接。

              TCP    127.0.0.1:6000         127.0.0.1:51683        ESTABLISHED     16460  TCP    127.0.0.1:6000         127.0.0.1:51685        ESTABLISHED     16460  TCP    127.0.0.1:49671        127.0.0.1:62522        ESTABLISHED     8244  TCP    127.0.0.1:49672        127.0.0.1:49673        ESTABLISHED     6952  TCP    127.0.0.1:49673        127.0.0.1:49672        ESTABLISHED     6952  TCP    127.0.0.1:51058        127.0.0.1:51059        ESTABLISHED     4612  TCP    127.0.0.1:51059        127.0.0.1:51058        ESTABLISHED     4612  TCP    127.0.0.1:51061        127.0.0.1:51062        ESTABLISHED     4612

            awk '{print $5}' :提取出第5列进程ID。

            1646016460824469526952461246124612

            sort | uniq -c | sort -nr :排序统计每个进程ID的连接数量,并按照连接数量从高到低排序;

            • sort:排序。
            • uniq -c:用于在文本中查找并计数唯一行,有点像count - group by
            • sort -nr:用于对文本进行排序。
              • -n 选项表示按照数值大小排序,而不是按照字典序排序;
              • -r 选项表示按照逆序排序,即从大到小排序。
                netstat -ano | grep ESTABLISHED | awk '{print }' | sort1646016460461246124612695269528244netstat -ano | grep ESTABLISHED | awk '{print }' | sort | uniq -c2 164603 46122 69521 8244netstat -ano | grep ESTABLISHED | awk '{print }' | sort | uniq -c | sort -nr3 46122 164602 69521 8244

                head : 显示前面的若干行。

                netstat -ano | grep ESTABLISHED | awk '{print }' | sort | uniq -c | sort -nr | head -23 46122 16460

                显示每个IP地址的连接数

                netstat -ano | awk '{print }' | cut -d: -f1 | sort | uniq -c | sort -rn

                cut -d: -f1 :用于从文本中剪切文本并打印出指定字段。目的是从连接信息中提取远程 IP 地址,剔除掉冒号和端口号。

                • -d: 表示使用冒号作为分隔符
                • -f1 表示提取分隔符左边的第一个字段
                  netstat -ano | grep ESTABLISHED | awk '{print }'127.0.0.1:5124010.2.3.411:443110.236.32.1:443netstat -ano | awk '{print }' | cut -d: -f1127.0.0.110.2.3.411110.236.32.1

                  其他命令跟上面一样单步调试即可。

                  显示每种类型TCP/UDP的连接数

                  netstat -ano | awk '{print }' | sort | uniq -c120 TCP82 UDP

                  显示每种网络状态的数量

                  // TCP 网络状态的数量netstat -ano |grep TCP | awk '{print }' | sort | uniq -c62 ESTABLISHED51 LISTENING 2 TIME_WAIT

                  显示指定进程ID网络状态的数量

                  // TCP 网络状态的数量netstat -ano |grep 进程ID | awk '{print }' | sort | uniq -c62 ESTABLISHED51 LISTENING 2 TIME_WAIT

                  显示端口占用数量

                  netstat -ano | grep -c :或者netstat -a -n | grep -c "TCP"netstat -a -n | grep -c "UDP"netstat -a -n | grep -w "TCP" | wc -lnetstat -ano | awk 'NR>2{print }' | sort | uniq -c | awk '{print  "占用了""个端口"}'上面的都有重复netstat -ano | awk '{print }' | cut -d: -f1 | sort | uniq -c | sort -rn

                  grep -c : : grep 命令用于在文件或输出中查找与指定模式匹配的行,并将匹配的行打印出来。

                  • 其中 -c 选项用于统计匹配到的行数
                  • : : 表示匹配冒号字符。

                    因此,grep -c : 命令会统计输出或文件中包含冒号字符的行数。

                    显示指定进程ID指定协议的数量

                    netstat -ano | grep 进程ID | grep UDP | grep -v -E ':5353|::' 
                    • -v:排除相关的行。grep -v UDP排除UDP相关的行。

                    • -E 'keyword1|keyword2|keyword3' : 匹配多个关键词,keyword1、keyword2和keyword3是关键词,用|分隔。

                    • wc -l : 用于统计文件的行数

                      netstat -ano | grep 6712 | grep UDP | grep -v -E ':5353|::' | wc -l

                      网络状态

                      State状态
                      LISTENING监听中,服务端需要打开一个socket进行监听,侦听来自远方TCP端口的连接请求
                      ESTABLISHED已连接,代表一个打开的连接,双方可以进行或已经在数据交互了
                      SYN_SENT客户端通过应用程序调用connect发送一个SYN以请求建立一个连接。在收到ACK后,状态转为ESTABLIHSED。
                      CLOSE_WAIT被动关闭端接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序)
                      TIME_WAIT主动关闭端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态
                      LAST_ACK等待对方回应一个ACK(这是准备关闭连接的一个步骤,意味着这个连接正在关闭)

上一篇:轻松下载苹果综艺,详细步骤教程

下一篇:宝塔面板效果深度解析,测试方法与技巧全攻略!