Linux怎么使用ethtool检查网卡信息

ethtool是Linux下用于查询和配置网络接口的命令行工具,可查看网卡速度、双工模式、驱动信息及统计数据显示链路状态;通过ethtool interface查看基本信息,-i查看驱动版本,-S获取收发错误等统计数据,-k管理卸载功能,-s可强制设置速率与双工模式(需注意匹配对端设备),-p用于物理定位网卡指示灯;使用时需root权限,注意接口命名规则变化,修改非持久化,部分功能受限于硬件或驱动支持,误操作可能导致链路异常。

linux怎么使用ethtool检查网卡信息

ethtool

是 Linux 下一个非常实用的命令行工具,主要用于查询和修改网络接口的驱动程序和硬件设置。通过它,我们可以快速获取网卡的速度、双工模式、支持的功能以及统计数据等关键信息,这对于日常的网络诊断和性能优化非常有帮助。

解决方案

在 Linux 系统中,使用

ethtool

检查网卡信息通常非常直接。你只需要在终端中输入

ethtool

命令,后面跟上你想要检查的网络接口名称。

比如说,如果你的网卡接口是

eth0

enp0s3

,你可以这样操作:

ethtool eth0# 或者ethtool enp0s3

执行这个命令后,你会看到一系列关于该网卡的基本信息,包括:

Supported ports: 网卡支持的物理接口类型(如TP,即双绞线)。Supported link modes: 网卡支持的连接速度和双工模式(如1000baseT/Full)。Advertised link modes: 网卡当前通告给对端的连接能力。Speed: 当前实际连接速度。Duplex: 当前双工模式(Full或Half)。Port: 接口类型。Link detected: 链路是否连接(yes/no)。

除了查看基本信息,

ethtool

还有很多有用的选项:

查看驱动程序信息:

ethtool -i eth0

这会显示网卡的驱动程序名称、版本、固件版本和总线信息,对于排查驱动兼容性问题很有用。

查看统计信息:

ethtool -S eth0

这个命令会输出大量的网卡统计数据,比如接收/发送的字节数、错误包、丢包、碰撞次数等。这些数据对于分析网络性能瓶颈和故障非常有价值。

查看或修改网卡卸载(offload)设置:

ethtool -k eth0  # 查看当前设置# ethtool -K eth0 rx off # 关闭接收卸载功能(谨慎操作)

网卡卸载功能(如TCP Segmentation Offload, Generic Receive Offload)可以将一些网络处理任务从CPU转移到网卡硬件上,提高性能。但有时,这些功能可能导致兼容性问题,需要临时关闭进行测试。

让网卡指示灯闪烁:

sudo ethtool -p eth0 10

这个命令会让指定网卡的指示灯闪烁10秒钟,对于在机架中快速定位物理网卡非常实用。需要

sudo

权限。

记住,很多

ethtool

的操作,特别是修改网卡设置的,都需要

root

权限(使用

sudo

)。

ethtool

的输出信息都代表什么?如何解读这些关键参数?

初次接触

ethtool

的输出,可能会觉得信息量有点大,甚至有些参数看起来晦涩难懂。但实际上,只要抓住几个核心点,解读起来并不复杂。

当你运行

ethtool 

时,最先映入眼帘的通常是“Settings for


:”之后的一系列参数。

Speed: 1000Mb/s

Duplex: Full

这两个是判断网卡连接状态和性能最直观的参数。

Speed

表示当前网卡实际协商到的连接速度,

Duplex

表示双工模式(

Full

是全双工,可以同时收发数据;

Half

是半双工,收发数据需要轮流进行,性能较差)。如果这里显示的速度远低于预期,或者双工模式是

Half

,那通常意味着网线、交换机端口或网卡本身可能存在问题。

Link detected: yes

这个非常关键,它直接告诉你网线是否连接正常,物理链路是否已经建立。如果是

no

,那首先要检查网线是否插好、另一端的设备(交换机、路由器)是否开机。

Supported link modes

Advertised link modes

微信 WeLM 微信 WeLM

WeLM不是一个直接的对话机器人,而是一个补全用户输入信息的生成模型。

微信 WeLM 33 查看详情 微信 WeLM

Supported link modes

列出了网卡硬件本身支持的所有连接速度和双工模式。比如

1000baseT/Full

表示支持千兆全双工。

Advertised link modes

则是网卡当前向连接的对端设备“宣告”自己支持的连接模式。如果这里缺少了网卡实际支持的模式,可能导致协商不出最佳连接。

Driver: e1000e

Version: 3.2.6-k

Firmware version: 0.13-4

这些信息来自

ethtool -i

的输出,它们告诉你网卡正在使用的驱动程序名称、版本以及固件版本。在遇到网络性能问题或兼容性故障时,这些是排查驱动是否过时、是否有bug的重要线索。

rx_packets: 123456

tx_packets: 654321

(来自

ethtool -S

): 这些是网卡接收和发送的数据包数量。更重要的是,像

rx_errors

(接收错误包)、

tx_errors

(发送错误包)、

rx_dropped

(接收丢包)、

tx_dropped

(发送丢包)、

collisions

(冲突次数) 这些统计数据,它们能直接反映网络链路的质量。大量的错误包或丢包通常指向物理层问题(如坏线、接口故障)或网络拥堵。

理解这些参数,就能让你在面对网络问题时,快速定位问题大致出在哪里,是物理连接、驱动程序还是网络配置层面的问题。

在网络故障排查中,

ethtool

有哪些不为人知的妙用?

ethtool

远不止一个简单的信息查看工具,它在网络故障排查中扮演着“瑞士军刀”的角色,有些功能甚至能让你在关键时刻力挽狂澜。

强制设置网卡速度与双工模式:

sudo ethtool -s eth0 speed 100 duplex full autoneg off

这个命令是双刃剑,一般不推荐随意使用,因为自动协商(

autoneg on

)是最佳实践。但在某些特殊情况下,比如连接到一个老旧的、不支持自动协商的交换机端口,或者当自动协商出现问题导致连接不稳定时,强制将网卡设置为特定的速度和双工模式(比如

100Mb/s Full

)可以作为一种临时的解决方案,让网络恢复工作。我遇到过几次旧设备对接新设备,就是靠这个才勉强跑起来。但切记,这只是权宜之计,根本问题还是要去解决。

诊断网卡卸载(Offload)功能引起的奇怪问题:你可能会遇到网络吞吐量异常低、TCP连接经常中断,或者某些特定应用网络性能奇差的问题,但其他网络工具却显示一切正常。这时候,

ethtool -k 

就能派上用场了。网卡卸载功能(如

tx-checksumming

scatter-gather

tso

gso

gro

等)旨在减轻CPU负担,但有时驱动程序bug或与特定网络设备不兼容,反而会引入问题。

ethtool -k eth0 # 查看当前卸载设置# 如果怀疑某个功能有问题,可以尝试关闭它# sudo ethtool -K eth0 tso off gso off gro off

通过逐一关闭或开启这些功能来测试,往往能定位到问题的根源。这需要一定的经验和耐心,但一旦找到,解决起来就豁然开朗。

结合统计数据(

ethtool -S

)进行深入分析:

ethtool -S

提供的统计数据远比

ifconfig

ip -s

更详细。除了常见的错误和丢包,它还会显示一些驱动层面的私有统计信息,比如

rx_fifo_errors

(接收FIFO溢出)、

tx_timeout

(发送超时) 等。这些数据对于诊断硬件层面的瓶颈,例如网卡缓存不足、驱动程序处理速度跟不上网络流量等问题,提供了宝贵线索。当我在处理高流量服务器的网络性能问题时,这些底层统计数据常常能帮助我发现一些隐藏很深的硬件或驱动问题。

物理定位网卡:

ethtool -p

虽然听起来很简单,但在数据中心或机房里,一台服务器可能有多块网卡,或者有很多服务器堆叠在一起。

sudo ethtool -p eth0 60

这样的命令能让指定网卡上的指示灯闪烁一分钟,让你一眼就能在物理层面找到对应的网卡,避免插错线或拔错卡这种低级错误。这在紧急维护时,能节省大量时间。

这些“妙用”往往需要你在面对具体问题时,结合其他工具(如

tcpdump

ip

ss

等)和你的网络知识进行综合判断。

使用

ethtool

时,有哪些常见的坑和需要注意的地方?

尽管

ethtool

功能强大,但在实际使用中,也确实有一些常见的“坑”和需要注意的地方,稍不留神就可能掉进去,甚至导致网络中断。

权限问题: 这是最常见的。很多

ethtool

的操作,特别是涉及到修改网卡设置(如

ethtool -S

)或控制指示灯(

ethtool -p

),都需要

root

权限。如果你直接运行而没有加

sudo

,通常会得到一个“Operation not permitted”的错误。别忘了加

sudo

网卡名称的变迁: 以前 Linux 系统中网卡接口通常是

eth0

,

eth1

这样的命名。但现在,很多发行版(尤其是使用

systemd

的)采用了“可预测的网络接口名称”,比如

enp0s3

ens33

eno1

等。如果你还在习惯性地使用

eth0

,但你的系统已经改用新命名规则,那

ethtool eth0

就会告诉你“No such device”。使用

ip a

ifconfig -a

先确认你系统中的实际网卡名称。

修改设置的持久化问题: 使用

ethtool -S

命令进行的任何修改,例如强制设置速度和双工模式,都只是临时的。系统重启后,这些设置就会丢失,恢复到默认或网络配置文件中定义的配置。如果你需要永久保留这些设置,你必须将它们写入到网络配置文件中,例如

/etc/network/interfaces

(Debian/Ubuntu)或通过

NetworkManager

的配置(CentOS/RHEL/Fedora)。不同的发行版和网络管理工具,配置方式差异很大,需要查阅相应文档。

硬件兼容性与驱动支持: 并非所有网卡都支持

ethtool

的所有功能。有些老旧的网卡或特定的驱动程序可能只支持一部分

ethtool

命令。比如,某些网卡可能不支持

ethtool -p

来闪烁指示灯,或者某些卸载功能无法通过

ethtool -K

来控制。当你尝试执行某个命令却得到“Operation not supported”或类似的错误时,这通常是硬件或驱动的限制。

盲目修改的风险:

ethtool -S

强制设置网卡速度和双工模式,虽然在特定情况下有用,但如果与连接的对端设备(交换机端口)设置不匹配,很可能导致链路无法建立,或者建立后性能极差(比如出现大量错误包)。比如,如果交换机端口是千兆自动协商,你却强制网卡为百兆全双工,那么很可能无法正常通信。在不确定时,最好保持

autoneg on

,让网卡和对端设备自动协商。

ethtool: command not found

如果你的系统是最小化安装,

ethtool

工具可能没有默认安装。遇到这个错误,你需要手动安装它。对于基于 Debian/Ubuntu 的系统,使用

sudo apt install ethtool

;对于基于 RHEL/CentOS 的系统,使用

sudo yum install ethtool

sudo dnf install ethtool

在使用

ethtool

时,多一份谨慎,多一份验证,就能有效避免不必要的麻烦。

以上就是Linux怎么使用ethtool检查网卡信息的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
怎样使用VSCode的GitLens扩展查看代码历史?
上一篇 2025年11月7日 11:03:32
QQ音乐付费会员怎么退订_QQ音乐付费会员退订的详细指南
下一篇 2025年11月7日 11:03:43

相关推荐

  • composer require-dev和require有什么不同_Composer Require与Require-Dev区别解析

    require用于声明项目运行必需的依赖,如框架、数据库组件和第三方SDK,这些包会随项目部署到生产环境;2. require-dev用于声明仅在开发和测试阶段需要的工具,如PHPUnit、PHPStan、Faker等,不会默认部署到生产环境;3. 安装时composer install根据环境决定…

    2026年5月10日
    900
  • 利用海象运算符简化条件赋值:Python教程与最佳实践

    本文旨在探讨Python中海象运算符(:=)在条件赋值场景下的应用。通过对比传统if/else语句与海象运算符,以及条件表达式,分析海象运算符在简化代码、提高可读性方面的优势与局限性。并通过具体示例,展示如何在列表推导式等场景下合理使用海象运算符,同时强调其潜在的复杂性及替代方案,帮助开发者更好地掌…

    2026年5月10日
    000
  • Debian syslog性能优化技巧有哪些

    提升Debian系统syslog (通常基于rsyslog)性能,关键在于精简配置和高效处理日志。以下策略能有效优化日志管理,提升系统整体性能: 精简配置,高效加载: 在rsyslog配置文件中,仅加载必要的输入、输出和解析模块。 使用全局指令设置日志级别和格式,避免不必要的处理。 自定义模板: 创…

    2026年5月10日
    000
  • c++中的SFINAE技术是什么_c++模板编程中的SFINAE原理与应用

    SFINAE 是“替换失败不是错误”的原则,指模板实例化时若参数替换导致错误,只要存在其他合法候选,编译器不报错而是继续重载决议。它用于条件启用模板、类型检测等场景,如通过 decltype 或 enable_if 控制函数重载,实现类型特征判断。尽管 C++20 引入 Concepts 简化了部分…

    2026年5月10日
    000
  • Golang goroutine与channel调试技巧

    使用go run -race检测数据竞争,结合runtime.NumGoroutine监控协程数量,通过pprof分析阻塞调用栈,利用select超时避免永久阻塞,有效排查goroutine泄漏、死锁和数据竞争问题。 Go语言的goroutine和channel是并发编程的核心,但它们也带来了调试上…

    2026年5月10日
    000
  • 使用 Jupyter Notebook 进行探索性数据分析

    Jupyter Notebook通过单元格实现代码与Markdown结合,支持数据导入(pandas)、清洗(fillna)、探索(matplotlib/seaborn可视化)、统计分析(describe/corr)和特征工程,便于记录与分享分析过程。 Jupyter Notebook 是进行探索性…

    2026年5月10日
    000
  • 网站标题关键词更新后,搜索引擎为何仍显示旧标题?

    网站标题更新后,搜索引擎为何显示旧标题? 网站SEO优化中,站长常修改网站标题关键词,期望搜索结果显示自定义标题。然而,即使更新标签、meta keywords、meta description和结构化数据中的name属性后,搜索结果仍显示旧标题,这令人费解。本文将对此进行解释。 问题:站长修改了网…

    2026年5月10日
    100
  • 深入理解 Express.js 中 next() 参数的作用与中间件机制

    本文深入探讨 express.js 中间件函数中的 `next()` 参数。它负责将控制权传递给请求-响应周期中的下一个中间件或路由处理程序。文章将详细解释 `next()` 的工作原理、中间件的注册与执行顺序,以及不正确使用 `next()` 可能导致请求挂起的风险,并通过代码示例和实际应用场景,…

    2026年5月10日
    000
  • Python命令怎样使用profile分析脚本性能 Python命令性能分析的基础教程

    使用Python的cProfile模块分析脚本性能最直接的方式是通过命令行执行python -m cProfile your_script.py,它会输出每个函数的调用次数、总耗时、累积耗时等关键指标,帮助定位性能瓶颈;为进一步分析,可将结果保存为文件python -m cProfile -o ou…

    2026年5月10日
    000
  • 如何插入查询结果数据_SQL插入Select查询结果方法

    如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法如何插入查询结果数据_SQL插入Select查询结果方法

    使用INSERT INTO…SELECT语句可高效插入数据,通过NOT EXISTS、LEFT JOIN、MERGE语句或唯一约束避免重复;表结构不一致时可通过别名、类型转换、默认值或计算字段处理;结合存储过程可提升可维护性,支持参数化与动态SQL。 将查询结果数据插入到另一个表中,可以…

    2026年5月10日 用户投稿
    000
  • Discord.py 交互按钮超时与持久化解决方案

    本教程旨在解决Discord.py中交互按钮在一段时间后出现“This Interaction Failed”错误的问题。我们将深入探讨视图(View)的超时机制,并提供通过正确设置timeout参数以及利用bot.add_view()方法实现按钮持久化的具体方案,确保您的机器人交互功能稳定可靠,即…

    2026年5月10日
    000
  • python中zip函数详解 python多序列压缩zip函数应用场景

    zip函数的应用场景包括:1) 同时遍历多个序列,2) 合并多个列表的数据,3) 数据分析和科学计算中的元素运算,4) 处理csv文件,5) 性能优化。zip函数是一个强大的工具,能够简化代码并提高处理多个序列时的效率。 在Python中,zip函数是一个非常有用的工具,它能够将多个可迭代对象打包成…

    2026年5月10日
    000
  • c++如何实现UDP通信_c++基于UDP的网络通信示例

    UDP通信基于套接字实现,适用于实时性要求高的场景。1. 流程包括创建套接字、绑定地址(接收方)、发送(sendto)与接收(recvfrom)数据、关闭套接字;2. 服务端监听指定端口,接收客户端消息并回传;3. 客户端发送消息至服务端并接收响应;4. 跨平台需处理Winsock初始化与库链接,编…

    2026年5月10日
    000
  • 谷歌浏览器如何截图 谷歌浏览器页面截图技巧

    谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧

    使用谷歌浏览器的开发者工具截图步骤:1. 按ctrl+shift+i(windows/linux)或cmd+option+i(mac)打开开发者工具。2. 点击右上角三个点,选择”更多工具”,再选择”截图”。3. 选择截取整个页面。推荐的谷歌浏览器扩展…

    2026年5月10日 用户投稿
    100
  • Python中怎样使用pymongo?

    在python中使用pymongo可以轻松地与mongodb数据库进行交互。1)安装pymongo:pip install pymongo。2)连接到mongodb:from pymongo import mongoclient; client = mongoclient(‘mongod…

    2026年5月10日
    000
  • JavaScript函数中插入加载动画(Spinner)的正确方法

    本文旨在解决在JavaScript函数中插入加载动画(Spinner)时遇到的异步问题。通过引入async/await和Promise.all,确保在数据处理完成前后正确显示和隐藏加载动画,提升用户体验。我们将提供两种实现方案,并详细解释其原理和优势。 在Web开发中,当执行耗时操作时,显示加载动画…

    2026年5月10日
    000
  • JS如何实现迭代器?迭代器协议

    JavaScript中实现迭代器需遵循可迭代协议和迭代器协议,通过定义[Symbol.iterator]方法返回具备next()方法的迭代器对象,从而支持for…of和展开运算符;该机制统一了数据结构的遍历接口,实现惰性求值,适用于自定义对象、树、图及无限序列等复杂场景,提升代码通用性与…

    2026年5月10日
    000
  • Golang空接口如何应用在项目中

    空接口可用于接收任意类型值,常见于日志函数、通用数据结构、JSON动态解析及配置驱动逻辑,提升代码灵活性,但需配合类型断言确保安全,避免滥用以降低维护成本。 空接口 interface{} 在 Go 语言中是一个非常灵活的类型,它可以存储任何类型的值。虽然它牺牲了一部分类型安全,但在实际项目中合理使…

    2026年5月10日
    100
  • Golang使用Protobuf定义接口与消息格式

    Protobuf通过字段编号实现兼容性,新增字段可忽略、删除字段可保留编号,确保新旧版本互操作,支持服务独立演进。 在Golang项目中,利用Protobuf定义接口和消息格式,本质上是为服务间通信构建了一套高效、类型安全且跨语言的契约。它让数据结构清晰可见,RPC调用标准化,极大地简化了分布式系统…

    2026年5月10日
    000
  • PHP多维数组到复杂XML结构的SOAP序列化实践

    本文旨在解决php多维数组向复杂soap xml结构序列化时遇到的“无法序列化结果”问题。通过深入理解soap xml的结构要求,包括命名空间和类型属性,文章将指导您如何构建符合特定xml schema的php关联数组。我们将利用`spatie/array-to-xml`库,详细演示其安装与使用方法…

    2026年5月10日
    000

发表回复

登录后才能评论
关注微信