I do not need some kind of realtime visual status of my ethernet - I want to run my script when last five minutes I uploaded less than X. So I need to get only one number from some command. What can you recommend?

I use Ubuntu 14.04.

  • What operating system?
    – Celada
    Feb 21, 2016 at 12:45
  • @Celada Ubuntu 14.04 Feb 21, 2016 at 12:47
  • Please add that information to your question. It's very relevant.
    – Celada
    Feb 21, 2016 at 12:54
  • @Celada added as tag Feb 21, 2016 at 12:57

2 Answers 2


Under Linux, reading /sys/class/net/<interface>/tx_bytes and /sys/class/net/<interface>/rx_bytes (depending on which direction you're interested in) is a good way to get the counters for the number of bytes received and the number of bytes sent on an interface. The counters are also available together for all interfaces in /proc/net/dev but you will have to do more parsing. You can read the values before you start transferring and read them again 5 minutes later then subtract to get the amount transferred during the 5 minute period.

  • 1
    /sys/class/net/*/statistics/tx_bytes is less deprecated and more convenient :).
    – sourcejedi
    Feb 21, 2016 at 13:58
  • 1
    Very nice. I'll edit that in and use it in the future too.
    – Celada
    Feb 21, 2016 at 13:59

ifconfig <interface> gives you throughput of a specific interface.

For example,

root@trinity:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 28:92:4a:32:0c:43
          inet addr:  Bcast:  Mask:
          inet6 addr: fe80::2a92:4aff:fe32:c43/64 Scope:Link
          RX packets:1554100056 errors:0 dropped:3528 overruns:0 frame:15941
          TX packets:570492690 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2186365577866 (1.9 TiB)  TX bytes:180850207310 (168.4 GiB)

Just read the TX bytes bit and do the maths. You'll need to track it in a file somewhere so you can work out the differential.

The ifconfig command is being deprecated, and people will suggest using ip. The relevant command with ip is,

root@trinity:~# ip -s link ls  eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
    link/ether 28:92:4a:32:0c:43 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    2186366161514 1554101939 0       3197    15941   9994871
    TX: bytes  packets  errors  dropped carrier collsns
    180850392034 570493984 0       0       0       0
  • 1
    to get TX from ip: ip -s link ls eth1 | awk 'NR==6{print $1}' Feb 21, 2016 at 13:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .