【发布时间】:2015-05-22 14:42:34
【问题描述】:
我必须用 gnuplot 制作一个 shell 脚本来生成我的接口 wlan0 的数据使用。这是我尝试过的:
==> 用于 gnuplot :
set title "Data usage over the current hour"
unset multiplot
set xdata time
set style data lines
set term png
set timefmt '"%M:%S"'
set xrange ['"00:00"':'"59:59"']
set xlabel "Time"
set ylabel "Traffic"
set autoscale y
set output "datausage.png"
plot "monitor.dat" using 1:2 t "RX" w lines, "monitor.dat" using 1:3 t "TX" w lines
==> 这是我的外壳:
#!/bin/bash
interface=$1
mkdir -p /tmp/netiface
while true;
do
recus=`ifconfig $interface | awk -F":" 'NR == 8 { print $2}' |awk '{print $2}' | cut -d "(" -f 2`
transmis=`ifconfig $interface | awk -F":" 'NR == 8 { print $3}' |awk '{print $2}' | cut -d "(" -f 2`
date=`date +%M:%S`
echo -e "$date $recus $transmis">>/tmp/netiface/monitor.dat
sleep 1
done
===> monitor.dat
08:18 823.6 121.4
08:19 823.6 121.4
08:20 823.6 121.4
08:21 823.6 121.4
08:22 823.7 121.5
08:23 824.3 121.5
08:24 824.6 121.5
08:25 824.6 121.5
08:26 824.6 121.5
08:27 824.6 121.5
08:28 824.6 121.5
08:29 824.6 121.5
08:30 824.6 121.5
08:31 824.6 121.5
08:32 824.6 121.5
但是当我执行所有这些时,我得到以下结果:
我应该如何更改我的脚本以正确绘制我的数据?
【问题讨论】:
-
从
gnuplot的角度来看,这是一个不错的问题,但请花 2 小时完成 awk 教程。您的代码可以简化为ifconfig $inter | awk -F":" 'NR==8{split($2,fld2," "); split($3, fld3," ") ; print substr(fld2[2],2) , substr(fld3[2],2)}' > outfile。祝你好运。 -
设置timefmt和xrange时尽量去掉多余的引号,
set timefmt "%M:%S"
标签: shell gnuplot network-traffic ifconfig