有没有办法在 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,并且还显示一位小数的非零小数值。