如何在Linux中查看端口 Linux ss与netstat对比

现代Linux系统更倾向于使用ss命令,因其通过netlink直接与内核通信,性能更高、信息更全、支持精细过滤,尤其在处理大量连接时远优于依赖解析/proc文件的netstat。

如何在linux中查看端口 linux ss与netstat对比

在Linux系统中,要查看当前系统开放或正在使用的端口,最常用的两个命令是

ss

netstat

。它们都能提供端口的监听状态、已建立的连接以及相关的进程信息。虽然

netstat

是老牌工具,但在现代Linux发行版中,

ss

因其更高的效率和更丰富的功能,正逐渐成为首选。

解决方案

要查看Linux中的端口,我们可以利用

ss

netstat

命令配合不同的参数。

使用

ss

命令:

ss

命令是

socket statistics

的缩写,它能直接从内核获取套接字信息,因此在处理大量连接时,通常比

netstat

更快。

查看所有监听的TCP和UDP端口(数字格式):

ss -tuln

这里

-t

表示TCP,

-u

表示UDP,

-l

表示监听状态,

-n

表示以数字形式显示端口号和IP地址,而不是尝试解析服务名或主机名。这是我个人最常用的组合,能快速概览哪些服务在等待连接。

查看所有已建立的TCP连接:

ss -tna

-a

显示所有(监听和非监听)套接字。

查看所有连接及其关联的进程信息:

ss -apn

-p

会显示拥有该套接字的进程名和PID。这在排查哪个程序占用了某个端口时非常有用。

使用

netstat

命令:

netstat

(network statistics)也是一个功能强大的网络工具,但它通过解析

/proc/net

目录下的文件来获取信息,在大连接量下可能会显得有些慢。

查看所有监听的TCP和UDP端口(数字格式):

netstat -tuln

参数含义与

ss

命令类似。

查看所有连接及其关联的进程信息:

netstat -apn

同样,

-p

参数用于显示进程信息。

查看所有TCP连接的详细信息:

netstat -ant

这里的

-a

表示所有连接,

-n

表示数字显示,

-t

表示TCP协议。

通常,我会优先使用

ss

,因为它在性能上的优势是实实在在的。但如果我面对的是一个较老的系统,或者习惯性地敲下了

netstat

,它也一样能完成任务。

为什么现代Linux系统更倾向于使用

ss

命令来查看网络连接?

现代Linux系统之所以更推荐使用

ss

而非

netstat

,核心原因在于它们的底层实现机制差异巨大。

netstat

的历史可以追溯到很久以前,它主要通过读取

/proc/net/tcp

/proc/net/udp

等文本文件来获取网络连接信息。这种方式在连接数量不多时尚可接受,但当系统上有成千上万个连接(比如一个繁忙的Web服务器或数据库服务器)时,解析这些庞大的文本文件会变得非常低效,甚至可能导致命令执行缓慢,占用大量CPU资源。我记得有一次在生产环境排查一个连接泄漏问题,

netstat

跑起来简直是煎熬,命令行卡了半天,而

ss

几乎是秒出结果,那一刻真是体会到什么叫“现代工具”的优势。

相比之下,

ss

命令直接利用了Linux内核提供的

netlink

套接字机制。

netlink

是一种更高效的内核与用户空间通信方式,它允许

ss

直接向内核查询网络统计信息,避免了文件解析的开销。这使得

ss

在以下几个方面表现出显著优势:

性能卓越: 对于大量并发连接的系统,

ss

的执行速度远超

netstat

,能够更快地返回结果,极大地提高了故障排查效率。信息更丰富:

ss

能够提供比

netstat

更详细的TCP连接状态信息,比如TCP窗口大小(

wscale

)、缓冲区大小(

sk_rmem

sk_wmem

)、TCP状态机定时器信息(

timer

)、RTT(往返时间)等。这些额外的信息对于深入分析网络性能问题和诊断疑难杂症非常有帮助。功能更强大:

ss

支持更复杂的过滤和查询条件,例如可以根据TCP状态、源/目的地址、端口范围等进行精细化过滤,这让查找特定连接变得更加便捷。

所以,虽然

netstat

依然可用,但在追求效率和深度分析的场景下,

ss

无疑是更优的选择。很多Linux发行版甚至已经将

netstat

标记为“过时”,推荐用户转向

ss

Melodio Melodio

Melodio是全球首款个性化AI流媒体音乐平台,能够根据用户场景或心情生成定制化音乐。

Melodio 110 查看详情 Melodio

如何使用

ss

netstat

命令过滤和查找特定的端口连接?

在实际操作中,我们很少需要查看所有的端口信息,更多时候是想找到特定端口、特定状态或特定程序的连接。

ss

netstat

都提供了强大的过滤能力。

过滤特定端口:

最直接的方法就是结合

grep

命令。

查找监听在80端口的TCP服务:

ss -tuln | grep ':80'

或者使用

netstat

netstat -tuln | grep ':80'

查找与SSH(22端口)相关的连接:

ss -ant | grep ':22'

这里

-a

显示所有连接,

-n

数字显示,

-t

只显示TCP。

过滤特定状态:

ss

命令可以直接通过

state

关键字进行状态过滤,这比

netstat

结合

grep

效率更高。

查找所有处于

ESTABLISHED

(已建立)状态的TCP连接:

ss -tn state established

查找所有处于

LISTEN

(监听)状态的TCP连接:

ss -tn state listening

查找所有处于

TIME-WAIT

状态的连接(这对于诊断高并发服务器上的连接资源耗尽问题很有用):

ss -tn state time-wait

netstat

通常需要先列出所有连接,再通过

grep

过滤状态,效率稍低:

netstat -ant | grep ESTABLISHED

过滤特定协议:

只看TCP连接:

ss -tln

netstat -tln

只看UDP连接:

ss -uln

netstat -uln

过滤特定程序或PID:

使用

-p

参数可以显示拥有该套接字的进程信息。

查找所有由

sshd

服务打开的连接:

ss -apn | grep sshd

或者查找占用某个特定端口的进程,比如80端口:

ss -apn | grep ':80'

输出会包含进程名和PID,例如

users:(("nginx",pid=1234,fd=5))

。这里有个小技巧,有时候你发现一个端口被占用了,但不知道是哪个程序,

ss -apn

或者

netstat -apn

就能直接告诉你PID和程序名,非常方便。我经常用它来揪出那些“幽灵进程”,比如一个服务崩溃后,它的监听端口可能还被一个僵尸进程或者旧的实例占用着。

通过这些组合和过滤,我们可以非常精确地定位到我们关心的网络连接信息,大大提升了排查问题的效率。

理解

ss

netstat

输出中的端口状态和关键信息

掌握了如何使用命令,下一步就是理解它们输出的信息,特别是那些看似神秘的端口状态。这些状态是TCP/IP协议栈内部连接生命周期的体现,理解它们对于网络故障诊断至关重要。

常见的TCP端口状态及其含义:

LISTEN (监听): 服务器端程序正在等待客户端连接。端口已打开,并准备接受传入连接。SYN_SENT (同步已发送): 客户端已发送一个SYN(同步)报文请求建立连接,正在等待服务器的SYN/ACK(同步/确认)响应。SYN_RECV (同步已接收): 服务器已收到客户端的SYN报文,并已发送自己的SYN/ACK报文,正在等待客户端的ACK(确认)报文。ESTABLISHED (已建立): TCP连接已经成功建立,双方可以开始进行数据传输。这是最常见的活动连接状态。FIN_WAIT1 (终止等待1): 应用程序已请求关闭连接,并发送了FIN(终止)报文,等待对端的ACK。FIN_WAIT2 (终止等待2): 已收到对端的ACK,现在等待对端发送FIN报文来关闭连接。TIME_WAIT (时间等待): 连接已关闭,但本地套接字仍在等待一段时间,以确保所有迟到的报文段都已在网络中消失。这是TCP连接关闭的最后一个阶段,通常持续2MSL(Maximum Segment Lifetime,最大报文段生存时间)。大量

TIME_WAIT

连接可能导致端口资源耗尽,影响新连接的建立。CLOSE_WAIT (关闭等待): 对端已发送FIN报文并关闭了连接,但本地应用程序尚未关闭其套接字。这通常意味着本地应用程序在处理完剩余数据后,需要主动关闭连接。LAST_ACK (最后确认): 本地应用程序已发送FIN报文并收到对端的FIN报文,现在正在等待对端的ACK报文来确认本地的FIN。CLOSING (关闭中): 双方同时发送了FIN报文,但本地在收到对端的FIN之前收到了自己的FIN的ACK。这种情况比较少见。

ss

netstat

输出中的关键字段:

Proto (协议): 指示是TCP还是UDP协议。Recv-Q / Send-Q (接收队列/发送队列):对于

netstat

,通常表示在套接字缓冲区中等待发送或接收的字节数。对于

ss

,在

ESTABLISHED

状态下,

Recv-Q

表示接收队列中未被应用程序读取的字节数,

Send-Q

表示发送队列中未被远程主机确认的字节数。在

LISTEN

状态下,它们可能表示待处理的(未完成三次握手)和已完成三次握手的连接数。Local Address:Port (本地地址:端口): 本地机器的IP地址和端口号。

0.0.0.0

表示监听所有可用的IP地址,

::

表示监听所有IPv6地址。Foreign Address:Port (外部地址:端口): 远程机器的IP地址和端口号。State (状态): 上面解释的TCP连接状态。PID/Program name (进程ID/程序名): 拥有该套接字的进程ID和对应的程序名称。

这些状态看似复杂,但理解了它们,你就能更好地诊断网络问题。比如,如果看到大量

TIME_WAIT

,可能需要调整系统参数(如

net.ipv4.tcp_tw_reuse

net.ipv4.tcp_tw_recycle

,尽管后者在某些场景下有争议),或者检查应用层的连接关闭逻辑。我曾经就遇到过一个服务因为

TIME_WAIT

过多,导致无法接受新连接的案例,当时就是通过观察这些状态才定位到问题。而如果发现

CLOSE_WAIT

持续不减,那往往意味着本地应用程序没有正确关闭连接,可能存在资源泄漏。通过观察这些关键信息,我们能够更深入地理解系统网络行为,从而有效地进行故障排查和性能优化。

以上就是如何在Linux中查看端口 Linux ss与netstat对比的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/938182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何使用 Java 检查文件路径是否位于指定目录下(任意深度)
上一篇 2025年11月29日 16:34:14
猫眼电影app为什么支付失败_猫眼电影支付失败原因解析
下一篇 2025年11月29日 16:34:16

相关推荐

  • 大数据量下的批量导入/导出优化

    在大数据环境下优化批量导入/导出的方法包括:1. 使用批处理技术分批导入/导出数据,减少系统资源压力;2. 采用数据流技术如apache kafka进行实时处理,降低内存占用;3. 利用并行处理技术分配任务到多个处理器或节点,提高处理速度;4. 通过性能监控和调优识别并解决瓶颈点,以提升整体效率。 …

    2026年9月21日
    200
  • 《忍者龙剑传4》明日发售 制作人谈亮点:经典与创新并存!

    白金工作室今日迎来《忍者龙剑传4》(ninja gaiden 4)制作人兼导演中尾裕治的特别公告,正式确认游戏将于10月21日(周二)全球上线。中尾在声明中详细介绍了本作的核心特色,强调在传承系列精髓的同时注入全新机制,为玩家打造既怀旧又充满惊喜的忍者冒险。 特色一:传承与进化的战斗系统 系列经典操…

    2026年9月21日
    000
  • mysqlmysql如何优化in条件大列表查询

    使用EXPLAIN和慢查询日志判断IN性能问题,type为ALL且possible_keys为空或rows过大说明需优化;JOIN在有索引时通常优于IN,尤其当列表值来自另一表时;大IN列表可拆分为多个小IN结合UNION ALL,或存入临时表后用JOIN提升效率。 优化 MySQL 中 IN 条件…

    2026年9月21日
    000
  • VSCode的代码格式化快捷键是什么?

    VSCode代码格式化快捷键为Shift+Alt+F(Windows/Linux)或Shift+Option+F(macOS),需安装对应语言的格式化工具;若无效,可能是未安装扩展、文件类型不支持或快捷键冲突;可右键选择“格式化文档”或通过命令面板执行,也可在键盘快捷方式中自定义。 VSCode的代…

    2026年9月21日
    000
  • 抖音电商橱窗带货技巧:如何有效提高转化率

    一、引言 近年来,随着短视频内容生态的蓬勃发展,抖音已成为电商营销的重要阵地。其中,电商橱窗作为连接用户与商品的核心工具,被越来越多商家和创作者广泛使用。在竞争日益激烈的环境中,掌握有效的带货技巧,提升转化效率,成为实现销售增长的关键。本文将深入解析如何通过科学策略提升抖音电商橱窗的运营效果。 二、…

    2026年9月21日
    100
  • 拍摄更强了!vivo X200系列功能升级:舞台模式双视野录像来了

    10月15日,vivo正式公布x200系列功能迭代计划,影像系统与相册体验将迎来多项重磅升级。 据悉,全新的希区柯克式Live Photo功能将支持主体智能追踪,用户可一键实现流畅变焦效果,该功能预计从11月起逐步推送。 舞台模式双视野录制功能将于12月陆续上线, 用户可一键启动前后双摄,录制视频时…

    2026年9月21日
    000
  • Linux怎么踢出指定的登录用户

    要踢出指定登录用户,首先使用w或who命令识别其TTY或会话ID,再通过pkill -KILL -t 强制终止会话,或用loginctl terminate-session 优雅结束;若需防止重新登录,可临时锁定账户(passwd -l)或将用户shell改为/sbin/nologin。 在Linu…

    2026年9月21日
    000
  • 如何在Java中实现简单的输入输出

    使用Scanner类读取键盘输入,需导入java.util.Scanner并创建实例;2. 调用nextInt、nextLine等方法获取不同类型数据,注意nextInt不读取换行符可能导致nextLine读取空字符串;3. 推荐使用后关闭Scanner;4. 输出通过System.out.prin…

    2026年9月21日
    000
  • 自定义组件(Component)的开发方法

    开发自定义组件的步骤包括:1. 使用html和css定义组件结构和样式;2. 用javascript实现动态效果和状态管理;3. 确保跨浏览器和设备兼容性;4. 采用模块化设计和外部状态管理工具;5. 进行性能优化和测试驱动开发。通过这些步骤,可以创建出优雅且高效的自定义组件,提升用户体验。 在开发…

    2026年9月21日
    000
  • 何小鹏称飞行汽车市场份额将超汽车 家庭生活将巨变

    在10月16日启动的可持续全球领导者大会上,小鹏汽车创始人、董事长兼首席执行官何小鹏发表了主题演讲,深入阐述了公司在智能出行与人工智能技术方面的前沿战略。他透露,小鹏汽车预计将在2026年实现飞行汽车的量产,并坚信这一新兴领域的发展速度和市场潜力将远超传统汽车产业。 ☞☞☞AI 智能聊天, 问答助手…

    2026年9月21日
    000
  • iQOO 15开售:2K珠峰屏+自研Q3芯片 重塑手游视效新标杆

    iQOO 15开售:2K珠峰屏+自研Q3芯片 重塑手游视效新标杆iQOO 15开售:2K珠峰屏+自研Q3芯片 重塑手游视效新标杆iQOO 15开售:2K珠峰屏+自研Q3芯片 重塑手游视效新标杆iQOO 15开售:2K珠峰屏+自研Q3芯片 重塑手游视效新标杆

      备受瞩目的“未来性能旗舰”iqoo 15正式开售,起售价为4199元。作为iqoo推出的重磅力作,iqoo 15不仅延续了品牌一贯的硬核性能基因,更以“性能超长板,全面无短板”的产品理念,凭借第五代骁龙8至尊版、自研电竞芯片q3、2k三星珠峰屏、超级潜望长焦等顶级配置,全面刷新了高性能智能手机的…

    2026年9月21日 用户投稿
    100
  • mac怎么用命令行定时关机_Mac命令行定时关机方法

    使用shutdown命令可设定Mac在指定时间或相对分钟后关机;2. 通过pmset命令能创建每周重复的定时关机任务;3. 可用pmset -g sched查看计划,sudo pmset repeat cancel取消重复任务,kill终止一次性关机。 如果您希望在离开电脑后让Mac在特定时间自动关…

    2026年9月21日
    100
  • 如何配置mysql初始用户和密码

    答案:MySQL安装后默认用户为root,密码为空或自动生成。需先确认服务运行,再登录并设置密码;若为空密码则直接登录后用ALTER USER修改,若为临时密码需从日志获取并强制修改;可创建远程用户并授权;推荐运行mysql_secure_installation进行安全加固,包括设密码、删匿名用户…

    2026年9月21日
    000
  • 抖音扫码点单小程序介绍及使用方法解析

    抖音扫码点单小程序在哪里 引言: 在移动互联网迅猛发展的背景下,小程序已深度融入人们的日常生活。作为抖音生态中的重要一环,抖音扫码点单小程序为线下消费场景注入了新的活力,搭建起商家与用户之间高效互动的桥梁。本文将围绕其核心功能、具体操作流程以及市场数据表现等方面进行全面解读,助力用户和商户更好地掌握…

    2026年9月21日
    000
  • Linux如何查看默认网关

    使用ip route命令可查看默认网关,如ip route | grep default显示default via 192.168.1.1 dev eth0,其中192.168.1.1为网关地址。 在Linux系统中,查看默认网关是网络排查中的常见操作。可以通过命令行工具快速获取当前系统的默认路由信…

    2026年9月21日
    200
  • 打工人的全能 AI 搭档,就是戴尔灵越 16 Plus?

    打工人的全能 AI 搭档,就是戴尔灵越 16 Plus?打工人的全能 AI 搭档,就是戴尔灵越 16 Plus?打工人的全能 AI 搭档,就是戴尔灵越 16 Plus?打工人的全能 AI 搭档,就是戴尔灵越 16 Plus?

    进入2024年,无论是硬件厂商还是软件供应商,都开始加大力度,向公众宣扬ai对工作生活乃至游戏的影响。在这样的背景下,选择购买一台全新的笔记本,很难不考量它的ai能力对自身使用的影响。因此,我们可以看到办公轻薄本的 ” 常青树 ” ——戴尔灵越系列,也凭借搭载的英特尔酷睿 u…

    2026年9月21日 用户投稿
    400
  • mysql如何排查磁盘IO瓶颈

    首先检查系统级磁盘IO,使用iostat、iotop等工具分析磁盘利用率和进程IO行为;再通过MySQL慢查询日志、sys.schema视图及SHOW ENGINE INNODB STATUS排查高IO消耗的SQL与内部等待事件;接着评估innodb_buffer_pool_size、innodb_…

    2026年9月21日
    000
  • 在Java中如何创建一个天气查询小应用

    注册OpenWeatherMap获取API密钥;2. 使用Java 11+的HttpClient发送HTTP请求;3. 构造带城市参数的URL并调用天气接口;4. 解析返回的JSON数据提取温度和天气描述;5. 在控制台输出结果,支持中文城市需URL编码。 在Java中创建一个天气查询小应用,核心是…

    2026年9月21日
    000
  • MAC怎么查询硬件序列号_Mac查找本机序列号与保修信息

    首先可通过“关于本机”查看Mac序列号,依次点击苹果菜单→“关于本机”即可获取;也可通过“系统信息”或“终端”命令ioreg -l | grep IOPlatformSerialNumber查找;若无法操作设备,可登录Apple ID账户在线查询;最后访问苹果官网保修查询页面输入序列号,即可验证保修…

    2026年9月21日
    200
  • 虚拟伴侣AI如何避免对话失误 虚拟伴侣AI错误纠正机制的优化技巧

    虚拟伴侣AI如何避免对话失误 虚拟伴侣AI错误纠正机制的优化技巧虚拟伴侣AI如何避免对话失误 虚拟伴侣AI错误纠正机制的优化技巧虚拟伴侣AI如何避免对话失误 虚拟伴侣AI错误纠正机制的优化技巧虚拟伴侣AI如何避免对话失误 虚拟伴侣AI错误纠正机制的优化技巧

    当虚拟伴侣AI回应出错时,可通过上下文感知纠错、用户反馈校正、多模型交叉验证、角色规则约束和渐进学习控制五项机制优化。一、建立动态上下文缓存池,比对语义一致性并检测情感或人设冲突,触发重生成;二、捕捉用户显式或隐式反馈,主动确认错误并更新对话状态,积累微调数据;三、部署三个专家模型分别评估逻辑、事实…

    2026年9月21日 用户投稿
    100

发表回复

登录后才能评论
关注微信