Bagaimana cara mendapatkan byte TX / RX tanpa ifconfig?

62

Karena ifconfigtampaknya sudah ditinggalkan dalam distribusi Linux utama, saya pikir saya akan belajar sesuatu tentang ipalat yang seharusnya digunakan ifconfig.

Dan di sini saya mengalami masalah: ketika dijalankan sendiri, ifconfigmenunjukkan jumlah byte yang diterima / dikirim pada setiap antarmuka selain info lainnya. Saya tidak dapat menemukan cara untuk mendapatkan ini dari ip. Apakah tidak ada fungsi seperti itu di alat ini? Alat bawaan apa lagi yang bisa saya gunakan untuk mendapatkan statistik itu?

justinas
sumber
Anda juga bisa check out netstat. linux.die.net/man/8/netstat
SunSparc

Jawaban:

53

Pilihan lain adalah menggunakan sistem file / proc. File / proc / net / dev berisi statistik tentang antarmuka jaringan yang dikonfigurasi. Setiap baris didedikasikan untuk satu antarmuka jaringan dan berisi statistik untuk menerima dan mengirim. Statistik mencakup metrik jumlah total byte yang diterima / ditransmisikan, paket, tetes, kesalahan, dan sebagainya.

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

Atau Anda dapat mencoba perintah netstat yang dapat menampilkan semua antarmuka jaringan dan statistik terkait:

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
sumber
/proc/net/devmemiliki format paling bersih dari semua solusi IMO, menerima.
justinas
Statistik ditunjukkan oleh cat /proc/net/devuntuk berapa lama?
lalebarde
Bagaimana Anda mendapatkan tx / rx dari /proc/net/dev?
Piotr Kula
1
Coba parsing 3. dan 11. bidang output, kira-kira seperti awk '/: / {print ($ 1, $ 3, $ 11)}' </ proc / net / dev
dsmsk80
55

The ipperintah yang merupakan bagian dari paket iproute2 adalah alat baru. The linksubcommand adalah untuk mengelola perangkat / interface.

Jika Anda bisa mendapatkan statistik dari antarmuka menggunakan 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
Sakit kepala
sumber
6
Meskipun procjawabannya bersih dan ringan, jawaban ini mungkin yang paling dekat dengan "penggantian" untuk ifconfigalat tersebut karena dirancang secara eksplisit dengan penggantian ifconfigpikiran.
Moshe Katz
2
ip -s link show dev eth0hanya menampilkan lalu lintas di eth0
pim
4
Untuk mendapatkan ini dalam bentuk yang dapat dibaca manusia (melaporkan dalam mb / gb / tb daripada byte), gunakan -hflag. Misalnya ip -h -s link,.
Joseph Redfern
46

Anda bisa mendapatkan semua informasi yang diperlukan melalui 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

Anda juga dapat menggunakan iptables dan mengurai output.

Untuk paket yang diterima

# iptables -L INPUT -n -v

untuk paket yang dikirimkan

# iptables -L OUTPUT -n -v 

Jika server adalah gateway, maka Anda juga harus menguraikan rantai FORWARD

ALex_hha
sumber
2

Anda dapat membaca file /sys/class/net/wlp3s0/statistics/rx_bytesdan mendapatkan rx_byes secara langsung tanpa memanggil perintah lain, vnstatjuga bagus. Linux menyimpan semua informasi dalam file yang saya tahu, jadi lebih baik mencari file-file itu dan mendapatkan informasi. Menemukan file yang relevan adalah tantangannya.

Dinuka Salwathura
sumber
2
Selamat datang di komunitas! Bagus sekali, itu benar, tetapi perhatikan bahwa beberapa kernel lama tidak menyediakan file-file ini. Semoga Anda beruntung, dan sukses! ;)
FarazX