You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu系统中已使用端口与可用未占用端口数量统计问题咨询

Ubuntu系统中已使用端口与可用未占用端口数量统计问题咨询

你好,针对你在Ubuntu里统计已使用和可用未占用端口的问题,我来帮你梳理下:

关于已使用端口的统计

你写的这个命令逻辑是没问题的:

netstat -nat | awk '{print $4}' | grep -E ":[0-9]+" | cut -d: -f2 | sort | uniq | wc -l

它的作用是提取所有TCP连接中的本地端口,去重后统计总数。如果想要验证准确性,可以试试这几个方法:

  • 去掉命令最后的wc -l,查看输出的端口列表,和ss -tuln(比netstat更高效的现代工具)的输出做对比
  • 用lsof -i -P -n | grep LISTEN查看所有处于监听状态的端口,把这些端口去重后计数,结果应该和你的命令输出匹配

关于可用未占用端口的统计

你之前的命令结果偏小,是因为它只统计了处于监听状态的TCP端口,但系统里的可用端口范围远不止这个。要准确计算可用端口,得先明确:

  • 系统的端口总范围是1-65535,其中包含知名端口(1-1023)、注册端口(1024-32767)和临时端口(通常是32768-60999,可通过cat /proc/sys/net/ipv4/ip_local_port_range查看具体范围)
  • 可用端口指的是整个1-65535范围内,没有被任何程序监听、也没有被活跃连接占用的端口

给你两个可行的计算方法:

方法一:总端口数减去已使用端口数

  1. 先导出所有已使用的端口:
    ss -tuln | awk '{print $5}' | cut -d: -f2 | grep -E "^[0-9]+$" | sort | uniq > used_ports.txt
    
  2. 计算总端口数(65535个)减去已使用端口数:
    echo $((65535 - $(wc -l < used_ports.txt)))
    

方法二:直接筛选未使用的端口

seq 1 65535 | grep -vxFf used_ports.txt | wc -l

这个命令会生成1到65535的所有端口,排除掉已使用的部分后统计数量。

小补充

  • 推荐优先使用ss工具代替netstat,因为netstat已经被标记为过时,ss的性能更好,输出信息也更全面
  • 如果只想统计被程序监听的端口(而非所有活跃连接占用的端口),可以用ss -tuln | awk '{print $5}' | cut -d: -f2 | grep -E "^[0-9]+$" | sort | uniq | wc -l,这个结果和你之前用netstat -tln统计的监听端口数应该一致

备注:内容来源于stack exchange,提问作者Saylent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 07:44:38