Как получить байты TX / RX без ifconfig?

62

Поскольку ifconfigв основных дистрибутивах Linux это явно устарело, я решил кое-что узнать об ipинструменте, который предполагается использовать вместо ifconfig.

И тут я столкнулся с проблемой: когда запускается сам по себе, ifconfigпоказывает количество байтов, полученных / переданных на каждом интерфейсе, помимо другой информации. Я не мог найти способ получить это от ip. Нет ли такой функции в этом инструменте? Какие еще встроенные инструменты я могу использовать для получения этой статистики?

Justinas
источник
Вы также можете проверить netstat. linux.die.net/man/8/netstat
SunSparc

Ответы:

53

Другой вариант - использовать файловую систему / proc. Proc / нетто / / DEV файл содержит статистические данные о сконфигурированных сетевых интерфейсах. Каждая строка предназначена для одного сетевого интерфейса и содержит статистику для приема и передачи. Статистика включает в себя метрики, такие как общее количество принятых / переданных байтов, пакетов, отбрасываний, ошибок и так далее.

cat /proc/net/dev

    Inter-|   Receive                                                |  Transmit
     face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed

    lo:    29846937   129576     0    0    0     0          0       0 29846937   129576     0    0    0     0       0          0
 wlan0:    9467393340 8027251    0    0    0     0          0       0 2559312961 5896509    0    0    0     0       0          0

Или вы можете попробовать команду netstat, которая может отображать все сетевые интерфейсы и связанную статистику:

netstat -i

Iface   MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
lo         65536   0   130435      0      0      0   130435      0      0      0 LRU
wlan0       1492   0  8028018      0      0      0  5897361      0      0      0 BMRU
dsmsk80
источник
/proc/net/devимеет самый чистый формат из всех решений IMO, принимающих.
Джастинас
Статистика показывает, cat /proc/net/devкак долго?
lalebarde
Как вы получаете TX / RX /proc/net/dev?
Петр Кула
1
Попробуйте проанализировать 3. и 11. поле вывода, что-то вроде awk '/: / {print ($ 1, $ 3, $ 11)}' </ proc / net / dev
dsmsk80
55

Команда, ipкоторая является частью пакета iproute2, является новым инструментом. linkСубкоманда для управления устройствами / интерфейсами.

Если вы можете получить статистику интерфейса, используя ip -s link

root:~# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    50679705   529967   0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    50679705   529967   0       0       0       0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:1d:7d:aa:e3:4e brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    187663757  308710386 0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    4051284587 532435117 0       0       0       0
Zoredache
источник
6
Хотя procответ прост и легок, этот ответ, вероятно, наиболее близок к «замене» ifconfigинструмента, поскольку он был явно разработан с учетом необходимости замены ifconfig.
Моше Кац
2
ip -s link show dev eth0показывать только трафик на eth0
pim
4
Чтобы получить это в удобочитаемой для человека форме (отчет в mb / gb / tb, а не в байтах), используйте -hфлаг. Так , например, ip -h -s link.
Джозеф Редферн
46

Вы можете получить всю необходимую информацию через proc

# cat /sys/class/net/eth0/statistics/rx_bytes
# cat /sys/class/net/eth0/statistics/rx_packets

# cat /sys/class/net/eth0/statistics/tx_packets
# cat /sys/class/net/eth0/statistics/tx_bytes

Также вы можете использовать iptables и разобрать вывод.

Для полученных пакетов

# iptables -L INPUT -n -v

для передаваемых пакетов

# iptables -L OUTPUT -n -v 

Если сервер является шлюзом, то вам также следует проанализировать цепочку FORWARD

ALex_hha
источник
2

Вы можете прочитать файл /sys/class/net/wlp3s0/statistics/rx_bytesи получить rx_byes напрямую, без вызова другой команды, vnstatэто тоже хорошо. Linux хранит всю информацию в файлах, как я знаю, поэтому лучше найти эти файлы и получить информацию. Поиск соответствующего файла является проблемой.

Динука Салватура
источник
2
Добро пожаловать в сообщество! Отлично, это правильно, но обратите внимание, что некоторые старые ядра не предоставляют эти файлы. Желаю удачи и успехов! ;)
FarazX