Linux ethtool命令介绍
ethtool命令是一个用来查询和控制网络设备驱动和硬件设置的工具。它可以显示网络设备的基本信息,如速度、双工模式、自动协商等。它也可以修改网络设备的一些参数,如改变速度、开启或关闭自动协商、设置流控等。此外,它还可以进行一些高级的操作,如测试网络设备的功能、调整中断亲和性、设置环回模式等。
Linux ethtool命令适用的Linux版本
ethtool命令适用于大多数的Linux发行版,如Ubuntu、Debian、CentOS、Fedora等。但是,不同的网络设备驱动可能支持不同的ethtool功能,所以要查看具体的网络设备是否支持某个ethtool选项,可以使用ethtool -i
命令查看驱动的版本和功能。如果网络设备不支持ethtool,或者ethtool的版本过低,可以尝试更新驱动或者安装最新的ethtool包。安装ethtool的命令如下:
- Ubuntu/Debian:
sudo apt-get install ethtool
- CentOS/Fedora:
sudo yum install ethtool
(CentOS 7) 或sudo dnf install ethtool
(CentOS 8)
Linux ethtool命令的基本语法
ethtool命令的基本语法格式如下:
ethtool [选项] 设备名
其中,设备名是指网络设备的名称,如eth0、ens33等。选项是指ethtool的功能参数,如-i
、-s
、-t
等。不同的选项可以组合使用,但是有些选项是互斥的,如-a
和-A
,-c
和-C
等。如果不指定任何选项,ethtool会显示网络设备的基本信息,如速度、双工模式、自动协商等。
Linux ethtool命令的常用选项或参数说明
ethtool命令有很多选项或参数,可以实现不同的功能。以下是一些常用的选项或参数的说明:
选项 | 参数 | 说明 |
---|---|---|
-i | 无 | 显示网络设备的驱动信息,如驱动名、版本、固件版本等 |
-s | 选项 参数 | 修改网络设备的设置,如速度、双工模式、自动协商等。需要指定具体的选项和参数,如speed 、duplex 、autoneg 等 |
-a | 无 | 显示网络设备的流控信息,如是否开启流控、流控的类型等 |
-A | 选项 参数 | 修改网络设备的流控设置,如开启或关闭流控、设置流控的类型等。需要指定具体的选项和参数,如rx 、tx 、autoneg 等 |
-g | 无 | 显示网络设备的环形缓冲区大小,如接收和发送缓冲区的大小等 |
-G | 选项 参数 | 修改网络设备的环形缓冲区大小,如增加或减少缓冲区的大小等。需要指定具体的选项和参数,如rx 、tx 、rx-mini 、rx-jumbo 等 |
-k | 无 | 显示网络设备的协议特性,如是否开启TCP段卸载、校验和卸载等 |
-K | 选项 参数 | 修改网络设备的协议特性,如开启或关闭TCP段卸载、校验和卸载等。需要指定具体的选项和参数,如tx 、rx 、sg 、tso 等 |
-c | 无 | 显示网络设备的中断相关信息,如中断的类型、数量、延迟等 |
-C | 选项 参数 | 修改网络设备的中断相关设置,如改变中断的类型、数量、延迟等。需要指定具体的选项和参数,如adaptive-rx 、adaptive-tx 、rx-usecs 、tx-usecs 等 |
-t | 选项 | 测试网络设备的功能,如在线测试、离线测试等。需要指定具体的选项,如online 、offline 等 |
-S | 无 | 显示网络设备的统计信息,如接收和发送的字节数、包数、错误数等 |
-p | 无 | 使网络设备的物理端口闪烁,以便于识别 |
-d | 无 | 显示网络设备的寄存器信息,如寄存器的地址、值等 |
-e | 无 | 显示网络设备的EEPROM信息,如EEPROM的大小、内容等 |
-P | 无 | 显示网络设备的暂停帧信息,如是否开启暂停帧、暂停帧的类型等 |
-r | 无 | 重置网络设备,使其恢复到默认设置 |
-l | 无 | 显示网络设备的通道信息,如通道的数量、类型等 |
-L | 选项 参数 | 修改网络设备的通道设置,如增加或减少通道的数量等。需要指定具体的选项和参数,如combined 、rx 、tx 等 |
-w | 选项 参数 | 保存或加载网络设备的设置,如保存到文件或从文件加载等。需要指定具体的选项和参数,如file 、magic 等 |
-n | 无 | 显示网络设备的唤醒信息,如是否支持唤醒、唤醒的类型等 |
-s | 选项 参数 | 修改网络设备的唤醒设置,如开启或关闭唤醒、设置唤醒的类型等。需要指定具体的选项和参数,如wol 、sopass 等 |
-h | 无 | 显示ethtool命令的帮助信息,如所有的选项和参数等 |
Linux ethtool命令的实例
以下是一些ethtool命令的实例,展示了ethtool命令的常见用法。这里假设网络设备的名称为eth0,如果不同,请替换为实际的设备名。
实例1:显示网络设备的基本信息
如果不指定任何选项,ethtool命令会显示网络设备的基本信息,如速度、双工模式、自动协商等。命令和输出如下:
[linux@bashcommandnotfound.cn ~]$ ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
...
实例2:显示网络设备的驱动信息
使用-i
选项,ethtool命令会显示网络设备的驱动信息,如驱动名、版本、固件版本等。命令和输出如下:
[linux@bashcommandnotfound.cn ~]$ ethtool -i eth0
driver: e1000e
version: 3.2.6-k
firmware-version: 0.13-4
expansion-rom-version:
bus-info: 0000:00:19.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
实例3:修改网络设备的速度和双工模式
使用-s
选项,ethtool命令可以修改网络设备的设置,如速度、双工模式、自动协商等。需要指定具体的选项和参数,如speed
、duplex
、autoneg
等。例如,如果要将网络设备的速度设置为100Mbps,双工模式设置为全双工,自动协商设置为关闭,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -s eth0 speed 100 duplex full autoneg off
注意,修改网络设备的设置可能需要root权限,所以需要使用sudo
命令。修改后,可以使用无参的ethtool命令查看网络设备的当前设置,如下:
[linux@bashcommandnotfound.cn ~]$ ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
MDI-X: on (auto)
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
可以看到,速度、双工模式、自动协商等参数已经按照我们的设置修改了。如果要恢复到默认的设置,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -s eth0 autoneg on
这会开启自动协商,让网络设备和链路伙伴自动协商最佳的速度和双工模式。
实例4:显示网络设备的流控信息
使用-a
选项,ethtool命令会显示网络设备的流控信息,如是否开启流控、流控的类型等。流控是一种用来避免网络拥塞的机制,它可以让发送方根据接收方的能力来调整发送速率。流控有两种类型,一种是基于暂停帧的流控,另一种是基于TCP的流控。命令和输出如下:
[linux@bashcommandnotfound.cn ~]$ ethtool -a eth0
Pause parameters for eth0:
Autonegotiate: on
RX: on
TX: on
可以看到,网络设备支持自动协商流控,以及开启了基于暂停帧的流控的接收和发送功能。
实例5:修改网络设备的流控设置
使用-A
选项,ethtool命令可以修改网络设备的流控设置,如开启或关闭流控、设置流控的类型等。需要指定具体的选项和参数,如rx
、tx
、autoneg
等。例如,如果要关闭网络设备的流控,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -A eth0 rx off tx off autoneg off
注意,修改网络设备的流控设置可能需要root权限,所以需要使用sudo
命令。修改后,可以使用-a
选项的ethtool命令查看网络设备的当前流控设置,如下:
[linux@bashcommandnotfound.cn ~]$ ethtool -a eth0
Pause parameters for eth0:
Autonegotiate: off
RX: off
TX: off
可以看到,网络设备关闭了自动协商流控,以及关闭了基于暂停帧的流控的接收和发送功能。如果要恢复到默认的流控设置,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -A eth0 rx on tx on autoneg on
这会开启自动协商流控,以及开启基于暂停帧的流控的接收和发送功能。
实例6:显示网络设备的环形缓冲区大小
使用-g
选项,ethtool命令会显示网络设备的环形缓冲区大小,如接收和发送缓冲区的大小等。环形缓冲区是一种用来存储网络数据包的内存空间,它可以提高网络性能,但是也会占用系统资源。命令和输出如下:
[linux@bashcommandnotfound.cn ~]$ ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 256
RX Mini: 0
RX Jumbo: 0
TX: 256
可以看到,网络设备的环形缓冲区有四种类型,分别是RX(接收)、RX Mini(接收小包)、RX Jumbo(接收大包)和TX(发送)。每种类型都有一个预设的最大值和一个当前的硬件值。一般来说,增加环形缓冲区的大小可以提高网络性能,但是也会增加内存的消耗和延迟。
实例7:修改网络设备的环形缓冲区大小
使用-G
选项,ethtool命令可以修改网络设备的环形缓冲区大小,如增加或减少缓冲区的大小等。需要指定具体的选项和参数,如rx
、tx
、rx-mini
、rx-jumbo
等。例如,如果要将网络设备的接收缓冲区的大小增加到512,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -G eth0 rx 512
注意,修改网络设备的环形缓冲区大小可能需要root权限,所以需要使用sudo
命令。修改后,可以使用-g
选项的ethtool命令查看网络设备的当前环形缓冲区大小,如下:
[linux@bashcommandnotfound.cn ~]$ ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 512
RX Mini: 0
RX Jumbo: 0
TX: 256
可以看到,网络设备的接收缓冲区的大小已经增加到了512。如果要恢复到默认的环形缓冲区大小,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -G eth0 rx 256
这会将网络设备的接收缓冲区的大小恢复到256。
实例8:显示网络设备的协议特性
使用-k
选项,ethtool命令会显示网络设备的协议特性,如是否开启TCP段卸载、校验和卸载等。协议特性是一种用来提高网络性能的技术,它可以让网络设备或驱动来处理一些协议层的任务,从而减轻CPU的负担。命令和输出如下:
[linux@bashcommandnotfound.cn ~]$ ethtool -k eth0
Features for eth0:
rx-checksumming: on
tx-checksumming: on
tx-checksum-ipv4: on
tx-checksum-ip-generic: off [fixed]
tx-checksum-ipv6: on
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: off [fixed]
scatter-gather: on
tx-scatter-gather: on
...
l2-fwd-offload: off [fixed]
hw-tc-offload: off [fixed]
esp-hw-offload: off [fixed]
esp-tx-csum-hw-offload: off [fixed]
rx-udp_tunnel-port-offload: off [fixed]
tls-hw-tx-offload: off [fixed]
tls-hw-rx-offload: off [fixed]
rx-gro-hw: off [fixed]
tls-hw-record: off [fixed]
可以看到,网络设备支持很多协议特性,如校验和卸载、段卸载、VLAN卸载等。每个协议特性都有一个开关,表示是否开启该特性。有些协议特性是固定的,表示不能修改,有些协议特性是可变的,表示可以修改。
实例9:修改网络设备的协议特性
使用-K
选项,ethtool命令可以修改网络设备的协议特性,如开启或关闭TCP段卸载、校验和卸载等。需要指定具体的选项和参数,如tx
、rx
、sg
、tso
等。例如,如果要关闭网络设备的TCP段卸载功能,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -K eth0 tso off
注意,修改网络设备的协议特性可能需要root权限,所以需要使用sudo
命令。修改后,可以使用-k
选项的ethtool命令查看网络设备的当前协议特性,如下:
[linux@bashcommandnotfound.cn ~]$ ethtool -k eth0
Features for eth0:
rx-checksumming: on
tx-checksumming: on
tx-checksum-ipv4: on
tx-checksum-ip-generic: off [fixed]
tx-checksum-ipv6: on
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: off [fixed]
scatter-gather: on
tx-scatter-gather: on
tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: off
...
tls-hw-tx-offload: off [fixed]
tls-hw-rx-offload: off [fixed]
rx-gro-hw: off [fixed]
tls-hw-record: off [fixed]
可以看到,网络设备的TCP段卸载功能已经关闭了。如果要恢复到默认的协议特性,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -K eth0 tso on
这会开启网络设备的TCP段卸载功能。
实例10:显示网络设备的中断相关信息
使用-c
选项,ethtool命令会显示网络设备的中断相关信息,如中断的类型、数量、延迟等。中断是一种用来通知CPU网络设备有数据包到达或发送的机制,它可以提高网络性能,但是也会增加CPU的负载。命令和输出如下:
[linux@bashcommandnotfound.cn ~]$ ethtool -c eth0
Coalesce parameters for eth0:
...
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0
可以看到,网络设备支持自适应的中断,以及显示了中断的延迟和帧数等参数。一般来说,减少中断的频率可以减轻CPU的负载,但是也会增加网络的延迟。
实例11:修改网络设备的中断相关设置
使用-C
选项,ethtool命令可以修改网络设备的中断相关设置,如改变中断的类型、数量、延迟等。需要指定具体的选项和参数,如adaptive-rx
、adaptive-tx
、rx-usecs
、tx-usecs
等。例如,如果要关闭网络设备的自适应中断,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -C eth0 adaptive-rx off adaptive-tx off
注意,修改网络设备的中断相关设置可能需要root权限,所以需要使用sudo
命令。修改后,可以使用-c
选项的ethtool命令查看网络设备的当前中断相关设置,如下:
[linux@bashcommandnotfound.cn ~]$ ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: off TX: off
stats-block-usecs: 0
sample-interval: 0
...
tx-usecs-high: 0
tx-frame-high: 0
可以看到,网络设备关闭了自适应中断。如果要恢复到默认的中断相关设置,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -C eth0 adaptive-rx on adaptive-tx on
这会开启网络设备的自适应中断。
实例12:测试网络设备的功能
使用-t
选项,ethtool命令可以测试网络设备的功能,如在线测试、离线测试等。需要指定具体的选项,如online
、offline
等。在线测试是指在网络设备正常工作的情况下进行的测试,它不会影响网络的连接和传输。离线测试是指在网络设备停止工作的情况下进行的测试,它会影响网络的连接和传输,但是可以进行更深入的检测。例如,如果要进行在线测试,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -t eth0 online
注意,测试网络设备的功能可能需要root权限,所以需要使用sudo
命令。测试后,ethtool命令会显示测试的结果,如下:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -t eth0 online
The test result is PASS
The test extra info:
Register test (offline) 0
Eeprom test (offline) 0
Interrupt test (offline) 0
Loopback test (offline) 0
Link test (on/offline) 0
Cable test (on/offline) 0
可以看到,测试的结果是通过,以及显示了不同类型的测试的状态。如果要进行离线测试,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -t eth0 offline
注意,离线测试会导致网络设备停止工作,所以要谨慎使用。测试后,ethtool命令会显示测试的结果,如下:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -t eth0 offline
The test result is PASS
The test extra info:
Register test (offline) 0
Eeprom test (offline) 0
Interrupt test (offline) 0
Loopback test (offline) 0
Link test (on/offline) 0
Cable test (on/offline) 0
可以看到,测试的结果是通过,以及显示了不同类型的测试的状态。如果要恢复网络设备的工作,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -r eth0
这会重置网络设备,使其恢复到默认设置。
实例13:显示网络设备的统计信息
使用-S
选项,ethtool命令会显示网络设备的统计信息,如接收和发送的字节数、包数、错误数等。统计信息可以用来监控和分析网络设备的性能和状态。命令和输出如下:
[linux@bashcommandnotfound.cn ~]$ ethtool -S eth0
NIC statistics:
rx_packets: 123456
tx_packets: 234567
rx_bytes: 3456789
...
rx_smbus: 0
dropped_smbus: 0
rx_dma_failed: 0
tx_dma_failed: 0
可以看到,网络设备的统计信息有很多,包括了各种接收和发送的数据量和错误数等。这些信息可以帮助我们判断网络设备是否正常工作,以及是否有网络拥塞或丢包等问题。
实例14:使网络设备的物理端口闪烁
使用-p
选项,ethtool命令可以使网络设备的物理端口闪烁,以便于识别。这在有多个网络设备的情况下,可以帮助我们找到对应的网络接口和网线。命令如下:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -p eth0
注意,使网络设备的物理端口闪烁可能需要root权限,所以需要使用sudo
命令。执行后,网络设备的物理端口会闪烁一段时间,然后恢复正常。如果要指定闪烁的时间,可以在命令后加上一个秒数,如下:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -p eth0 10
这会使网络设备的物理端口闪烁10秒钟,然后恢复正常。
实例15:显示网络设备的寄存器信息
使用-d
选项,ethtool命令可以显示网络设备的寄存器信息,如寄存器的地址、值等。寄存器是一种用来存储网络设备的状态和配置的内存空间,它可以反映网络设备的内部工作原理。命令和输出如下:
[linux@bashcommandnotfound.cn ~]$ sudo ethtool -d eth0
MAC Registers
-------------
0x00000: CTRL (Device control register) 0x18100241
0x00008: STATUS (Device status register) 0x80080783
0x00010: EERD (EEPROM read register) 0x00000000
0x00014: EERD (EEPROM read register) 0x00000000
0x00018: CTRL_EXT (Extended device control register) 0x000c0000
...
Linux ethtool命令的注意事项
- ethtool命令的使用可能需要root权限,所以在执行命令时可能需要使用
sudo
命令。 - ethtool命令的功能和参数可能因不同的网络设备驱动而异,所以在使用前最好先查看网络设备的驱动信息和支持的功能,可以使用
ethtool -i
命令查看。 - ethtool命令的一些选项可能会影响网络设备的工作状态和网络的连接和传输,所以在使用前最好先备份网络设备的当前设置,可以使用
ethtool -w
命令保存到文件,或者使用ethtool -r
命令恢复到默认设置。 - 如果在执行ethtool命令时出现
bash: ethtool: command not found
的错误,表示系统没有安装ethtool包,可以根据不同的Linux发行版使用以下命令安装:- Ubuntu/Debian:
sudo apt-get install ethtool
- CentOS/Fedora:
sudo yum install ethtool
(CentOS 7) 或sudo dnf install ethtool
(CentOS 8)
- Ubuntu/Debian:
评论区