Вопрос или проблема
Я могу получить информацию о пропускной способности сетевого интерфейса с помощью lshw, но в каком файле в sysfs хранится эта информация (т.е. в каком файле в каталоге /sys/class/net/eth0/device/)?
$ sudo lshw -class network
*-network
описание: Ethernet интерфейс
продукт: 82579LM Gigabit Сетевое Соединение
поставщик: Intel Corporation
физический id: 19
информация о шине: pci@0000:00:19.0
логическое имя: eth0
версия: 04
серийный номер: 3c:97:0e:b4:5c:6a
пропускная способность: 1Gbit/s
ширина: 32 бита
тактовая частота: 33MHz
возможности: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
конфигурация: autonegotiation=on broadcast=yes driver=e1000e driverversion=2.3.2-k firmware=0.13-3 latency=0 link=no multicast=yes port=twisted pair
ресурсы: irq:43 memory:f2500000-f251ffff memory:f253b000-f253bfff ioport:6080(size=32)
$ ls /sys/class/net/eth0/device/
broken_parity_status d3cold_allowed enable local_cpus net remove resource0 subsystem_device
class device firmware_node modalias numa_node rescan resource1 subsystem_vendor
config dma_mask_bits irq msi_bus power reset resource2 uevent
consistent_dma_mask_bits driver local_cpulist msi_irqs ptp resource subsystem vendor
Вы смотрите не в том месте.
Посмотрите в /sys/class/net/<device>/speed
.
Вы можете проверить пропускную способность интерфейса следующими способами.
-
dmesg | grep eth0
-
mii-tool -v eth0
-
ethtool eth0
Примечание: Измените имя устройства в соответствии с вашим.
В общем, вы можете узнать это, используя инструмент, такой как strace:
sudo strace -e trace=file -f -s128 lshw -class network
Ответ или решение
Для определения пропускной способности сетевых интерфейсов в Linux существует несколько методов и инструментов. В данной статье мы подробно рассмотрим доступные способы и укажем, какие файлы в файловой системе sysfs могут предоставить необходимую информацию.
Поиск информации о пропускной способности сетевого интерфейса
Основным файлом, в котором содержится информация о скорости сетевого интерфейса, является файл speed
, который расположен по следующему пути:
/sys/class/net/<имя_интерфейса>/speed
Например, для интерфейса eth0 вы можете использовать команду:
cat /sys/class/net/eth0/speed
Это вернет скорость интерфейса в мегабитах в секунду (Mbit/s).
Доступные инструменты для визуализации пропускной способности
Кроме прямого обращения к файлам sysfs, существует несколько команд, которые могут предоставить более сложные и структурированные данные о сетевом интерфейсе:
-
dmesg:
Вы можете просмотреть сообщения ядра, связанные с интерфейсом eth0 с помощью следующей команды:dmesg | grep eth0
Эта команда позволит увидеть сообщения о загрузке и конфигурации сетевого интерфейса.
-
mii-tool:
Этот инструмент позволяет получить информацию о состоянии интерфейса:mii-tool -v eth0
Здесь можно найти данные о скорости и дуплексном режиме соединения.
-
ethtool:
Это мощный инструмент для настройки и получения информации о сетевых интерфейсах. Используйте следующую команду:ethtool eth0
Вы получите полные данные об интерфейсе, включая текущую скорость, поддержку различных режимов и многие другие параметры.
Альтернативные способы получения информации
Еще один подход к извлечению информации о запроса к файловой системе заключается в использовании инструментов, таких как strace
. С помощью этой утилиты вы можете отследить системные вызовы, которые выполняет команда lshw:
sudo strace -e trace=file -f -s128 lshw -class network
Это позволит увидеть, какие файлы система запрашивает, включая файлы из директории /sys/class/net/
, что может быть полезным для более глубокого изучения работы.
Заключение
Итак, существует несколько способов определения пропускной способности сетевого интерфейса в Linux. Важно помнить, что для получения быстрого доступа к данным о скорости интерфейсов лучше всего использовать файл /sys/class/net/<device>/speed
. Тем не менее, в зависимости от ваших потребностей, вы можете обратиться к другим инструментам, таким как dmesg, mii-tool или ethtool, чтобы получить более полное представление о состоянии вашего сетевого оборудования.
Следуя этим рекомендациям, вы сможете эффективно управлять и мониторить сетевые интерфейсы на вашем сервере или рабочей станции.