我如何将输出打印vnstat -l
到文件?我尝试过:
vnstat -l &> file
但它只是挂断
答案1
删除该l
选项。从vnstat
手册页中:
-l, --live mode
Display current transfer rate for the selected interface in real time until interrupted. Statis‐
tics will be shown after interruption if the runtime was more than 10 seconds. An optional mode
parameter can be used to select between the displaying of packets per second (mode 0) and trans‐
fer counters (mode 1) during execution. --style can also be used to affect the layout of the
output.
因此,-l
使vnstat
显示输出处于“实时模式”,不断更新,这就是您无法捕获输出的原因。如果您想要一种易于解析的格式,请使用
vnstat --dumpdb
要保存标准输出,请执行以下操作
vnstat > log.txt
如果您想要的是当前的上传和下载速率,那么vnstat
这个工具就不合适。尝试sar
从包中获取(有关更多信息,sysstat
请参阅 man ):sar
sudo apt-get install sysstat
sudo sar -n DEV 1 1
wlan0
要从的输出中提取接口的当前*下载和上传速率,sar
请执行以下操作:
sudo sar -n DEV 1 1 | grep wlan0 | tail -n 1 | gawk '{print "Down: "$5,"Up: "$6}'
* “当前”是什么意思?sar
(以及任何其他方法)将需要几毫秒才能生成输出。
答案2
我不知道您是否只想将要监控网络活动的某个时期的最终摘要打印到文件中,但您可以通过这种方式来欺骗它:
vnstat -l -i <device> >> dump.txt
唯一的问题是 vnstat 会每秒将输出写入文件,因此这不是最方便的方法。对于每秒记录一次日志的持续监控,terdon 回答了您的问题。