我试图在BASH中编写我自己的跟踪,如附件中所示。
特别是我需要跟踪接收和发送数据的网络历史。在哪里可以得到这些网络发送/接收值,它是在一个文件中,还是从Linux中的一些命令中得到的?
使用BASH,我试图实现如下类似的功能:
前任:
/* My 10 seconds timer */
t = new javax.swing.Timer(10000, new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
}
});
后续:(好的站点:http://www.debianhelp.co.uk/networktools1.htm)
$ sudo apt-get install bwm-ng;
yum -y install bwm;
# Show me only plain mode
$ bwm-ng -o plain
bwm-ng v0.6 (delay 0.500s); press 'ctrl-c' to end this
/proc/net/dev
| iface Rx Tx Total
==============================================================================
lo: 88803.53 KB/s 88803.53 KB/s 88803.53 KB/s
eth0: 0.13 KB/s 0.13 KB/s 0.13 KB/s
------------------------------------------------------------------------------
total: 88803.66 KB/s 88803.66 KB/s 88803.66 KB/s
# Show only the interface that i need to see
$ bwm-ng -o plain -I eth0
bwm-ng v0.6 (delay 0.500s); press 'ctrl-c' to end this
/proc/net/dev
| iface Rx Tx Total
==============================================================================
eth0: 0.13 KB/s 0.13 KB/s 0.13 KB/s
------------------------------------------------------------------------------
total: 0.13 KB/s 0.13 KB/s 0.13 KB/s
# Show only in MB format or KB format
# by skiping -d will default show as KB
$ bwm-ng -o plain -d
bwm-ng v0.6 (delay 0.500s); press 'ctrl-c' to end this
/proc/net/dev
/ iface Rx Tx Total
==============================================================================
lo: 85.79 MB/s 85.79 MB/s 85.79 MB/s
eth0: 246.58 B/s 246.58 B/s 246.58 B/s
------------------------------------------------------------------------------
total: 85.79 MB/s 85.79 MB/s 85.79 MB/s
$ bwm-ng -o plain -N -d | grep total:
total: 0.00 B/s 0.00 B/s 0.00 B/s
total: 1.28 MB/s 1.28 MB/s 1.28 MB/s
total: 1.19 MB/s 1.19 MB/s 1.19 MB/s
total: 1.19 MB/s 1.19 MB/s 1.19 MB/s
# another tool i used apt-get install vnstat
# bwm-ng was doing wrong strange on other interfaces but this one
# now showing correct
$ vnstat -u -i lo
$ vnstat -u -i eth0
$ vnstat
$ iftop -i eth0
最佳答案
编辑:简单的方法:你可以一直使用mrtg或cacti而不是自己做。
否则。。。
每2秒输入和输出字节(按ctrl+c使其停止):
default_device=$(awk ' { if ($2 == '00000000') print $1 ; } ' < /proc/net/route)
while true
do
bytesin=$(grep $default_device /proc/net/dev | cut -d':' -f2 | awk ' { print $1; } ')
bytesout=$(grep $default_device /proc/net/dev | cut -d':' -f2 | awk ' { print $9; } ')
echo bytesin=$bytesin bytesout=$bytesout
sleep 2
done
您将得到如下输出:
bytesin=622734605 bytesout=1249429296
bytesin=622735091 bytesout=1249429620
bytesin=622735523 bytesout=1249430120
bytesin=622736268 bytesout=1249430481
bytesin=622736874 bytesout=1249430535
这些值是为安装了默认路由的设备获取的。
关于linux - 我如何获取实时值以在BASH中制作自己的脚本,如附件所示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8065925/