Linux-获取Linux系统的网络流量信息

https://serverfault.com/questions/533513/how-to-get-tx-rx-bytes-without-ifconfig

1
2
3
4
5
6
7
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
1
2
3
4
5
# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Useage sh speed.sh eth0
#!/bin/bash

ethn=$1

RX_pre=$(cat /sys/class/net/$ethn/statistics/rx_bytes)
TX_pre=$(cat /sys/class/net/$ethn/statistics/tx_bytes)

while true; do

sleep 1
RX_next=$(cat /sys/class/net/$ethn/statistics/rx_bytes)
TX_next=$(cat /sys/class/net/$ethn/statistics/tx_bytes)

# clear
# echo -e "\t RX $(date +%k:%M:%S) TX"

RX_delta=$((${RX_next} - ${RX_pre}))
TX_delta=$((${TX_next} - ${TX_pre}))

RX_pre=$RX_next
TX_pre=$TX_next

if [[ $RX_delta -lt 1024 ]]; then
RX_delta="${RX_delta} B/s"
elif [[ $RX_delta -lt 1048576 ]]; then
RX_delta=$(echo $RX_delta | awk '{printf "%.2f KB/s", $1/1024}')
else
RX_delta=$(echo $RX_delta | awk '{printf "%.2f MB/s", $1/1048576}')
fi

if [[ $TX_delta -lt 1024 ]]; then
TX_delta="${TX_delta} B/s"
elif [[ $TX_delta -lt 1048576 ]]; then
TX_delta=$(echo $TX_delta | awk '{printf "%.2f KB/s", $1/1024}')
else
TX_delta=$(echo $TX_delta | awk '{printf "%.2f MB/s", $1/1048576}')
fi

if [[ $RX_next -lt 1024 ]]; then
RX_total="${RX_next} B"
elif [[ $RX_next -lt 1048576 ]]; then
RX_total=$(echo $RX_next | awk '{print $1/1024 " KB"}')
elif [[ $RX_next -lt 1073741824 ]]; then
RX_total=$(echo $RX_next | awk '{print $1/1048576 " MB"}')
else
RX_total=$(echo $RX_next | awk '{print $1/1073741824 " GB"}')
fi

if [[ $TX_next -lt 1024 ]]; then
TX_total="${TX_next} B/s"
elif [[ $TX_next -lt 1048576 ]]; then
TX_total=$(echo $TX_next | awk '{print $1/1024 " KB"}')
elif [[ $TX_next -lt 1073741824 ]]; then
TX_total=$(echo $TX_next | awk '{print $1/1048576 " MB"}')
else
TX_total=$(echo $TX_next | awk '{print $1/1073741824 " GB"}')
fi

# echo -en "\033[2K\t$ethn \t $RX_total $RX_delta \t $TX_total $TX_delta\r"
printf "\033[2K\t$ethn 接收:%11s %14s \t\t 发送:%11s %14s\r" "$RX_total" "$RX_delta" "$TX_total" "$TX_delta"

done


Linux-获取Linux系统的网络流量信息
https://dnacore.github.io/post/70044f3b-4fd7-4c8d-86dc-8eb8763ed333.html
作者
DNACore
发布于
2020年5月14日
更新于
2023年11月29日
许可协议