Як отримати байти TX / RX без ifconfig?


61

Оскільки ifconfig, мабуть, застаріла в основних дистрибутивах Linux, я подумав, що я дізнаюся щось про ipінструмент, який повинен використовуватись замість ifconfig.

І тут я зіткнувся з проблемою: коли запускається самостійно, ifconfigпоказує кількість байтів, отриманих / переданих на кожному інтерфейсі, крім іншої інформації. Я не міг знайти способу отримати це ip. Чи немає такої функції в цьому інструменті? Які ще вбудовані інструменти я можу використати для отримання цих статистичних даних?


Ви також можете перевірити netstat. linux.die.net/man/8/netstat
SunSparc

Відповіді:


53

Інший варіант - використання файлової системи / proc. Файл / proc / net / 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

/proc/net/devмає найчистіший формат усіх рішень IMO, приймаючи.
Justinas

Статистика, яку показує, cat /proc/net/devє на тривалий час?
lalebarde

Як отримати tx / rx від /proc/net/dev?
Пьотр Кула

1
Спробуйте проаналізувати поля 3. та 11. на виході, щось на зразок awk '/: / {print ($ 1, $ 3, $ 11)}' </ proc / net / dev
dsmsk80

54

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

6
Хоча procвідповідь чиста і легка, ця відповідь, мабуть, найбільш близька до "заміни" ifconfigінструменту, оскільки вона була чітко розроблена з заміною ifconfigна увазі.
Моше Кац

2
ip -s link show dev eth0показувати лише трафік на eth0
pim

4
Щоб отримати це в читаному для людини вигляді (звітування в mb / gb / tb, а не в байтах), використовуйте -hпрапор. Так , наприклад, ip -h -s link.
Джозеф Редферн

46

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

# 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


2

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


2
Ласкаво просимо до громади! Молодці, це правильно, але зауважте, що деякі старі ядра не надають ці файли. Бажаю удачі та успіху! ;)
FarazX
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.