Tmux 状态行中的上传和下载速度

Tmux 状态行中的上传和下载速度

有没有办法在 Tmux 的状态行中获取上传和下载速度?

答案1

您可以从 tmux 的状态行调用 shell 脚本,指定所需的接口,如下所示:

set -g status-left '#[fg=blue]#(speed eth0)#[default]'

并将此脚本 speed 1放入您的 $PATH 中:

#!/bin/bash

iface=$1
RXB=$(</sys/class/net/"$iface"/statistics/rx_bytes)
TXB=$(</sys/class/net/"$iface"/statistics/tx_bytes)
sleep 2 
RXBN=$(</sys/class/net/"$iface"/statistics/rx_bytes)
TXBN=$(</sys/class/net/"$iface"/statistics/tx_bytes)
RXDIF=$(echo $((RXBN - RXB)) )
TXDIF=$(echo $((TXBN - TXB)) )

echo -e "$((RXDIF / 1024 / 2))K/s $((TXDIF / 1024 / 2))K/s"

1.不记得在哪里找到这个了...

答案2

我希望 jasonwryan 上面的答案能够处理所有接口,因此我做了以下修改:

#!/bin/bash

RXB=0
TXB=0

for rxbytes in /sys/class/net/*/statistics/rx_bytes ; do
  let RXB+=$(<$rxbytes)
done

for txbytes in /sys/class/net/*/statistics/tx_bytes ; do
  let TXB+=$(<$txbytes)
done

sleep 2 

RXBN=0
TXBN=0

for rxbytes in /sys/class/net/*/statistics/rx_bytes ; do
  let RXBN+=$(<$rxbytes)
done

for txbytes in /sys/class/net/*/statistics/tx_bytes ; do
  let TXBN+=$(<$txbytes)
done    

RXDIF=$(echo $((RXBN - RXB)) )
TXDIF=$(echo $((TXBN - TXB)) )

echo -e "$((RXDIF / 1024 / 2))K/s $((TXDIF / 1024 / 2))K/s"

显然,您可以将通配符更改为仅执行所有 eth* 或 wlan* 接口,或者使用 find 对两者进行更复杂的匹配。

答案3

在上述基础上,这应该使用 ^ 和 v 显示向上和向下指示器,使用正确的符号(Ki 是二进制千字节等)根据需要更改为 Mi 和 Gi,并且还显示一位小数的非零小数值。

https://github.com/gryftir/tmux-networkspeed

相关内容