有时我们需要较为实时的查看服务器上的网卡流量,这里我写了个shell小脚本。脚本中用了while true“死循环”,每隔10s从“/proc/net/dev”中取一次值并根据10s内的差值计算10s内的平均带宽;按ctrl+c停止执行。脚本兼容centos6和7,脚本不太复杂,而且脚本中注释也比较细致,所以我就不过多解释脚本内容了。
注:1kb=8字节,1Mb=1024kb
<code>#!/bin/sh</code>
<code> </code>
<code>if</code> <code>[ </code><code>"$1"</code> <code>= </code><code>""</code> <code>];</code><code>then</code> <code>#判断后面是否有跟参数</code>
<code> </code><code>echo</code> <code>-e </code><code>"\n use interface_name after the script,like \"script eth0\"...\n"</code>
<code> </code><code>exit</code> <code>-1</code>
<code>fi</code>
<code>echo</code> <code>-e </code><code>"\n start monitoring the $1,press \"ctrl+c\" to stop"</code>
<code>echo</code> <code>----------------------------------------------------------</code>
<code>file</code><code>=</code><code>/proc/net/dev</code> <code>#内核网卡信息文件</code>
<code>while</code> <code>true</code>
<code> </code><code>do</code>
<code> </code><code>RX_bytes=`</code><code>cat</code> <code>$</code><code>file</code><code>|</code><code>grep</code> <code>$1|</code><code>sed</code> <code>'s/^ *//g'</code><code>|</code><code>awk</code> <code>-F</code><code>'[ :]+'</code> <code>'{print $2}'</code><code>` </code><code>#这里sed这一步为了同时兼容centos6和7</code>
<code> </code><code>TX_bytes=`</code><code>cat</code> <code>$</code><code>file</code><code>|</code><code>grep</code> <code>$1|</code><code>sed</code> <code>'s/^ *//g'</code><code>|</code><code>awk</code> <code>-F</code><code>'[ :]+'</code> <code>'{print $10}'</code><code>`</code>
<code> </code><code>sleep</code> <code>10</code>
<code> </code><code>RX_bytes_later=`</code><code>cat</code> <code>$</code><code>file</code><code>|</code><code>grep</code> <code>$1|</code><code>sed</code> <code>'s/^ *//g'</code><code>|</code><code>awk</code> <code>-F</code><code>'[ :]+'</code> <code>'{print $2}'</code><code>`</code>
<code> </code><code>TX_bytes_later=`</code><code>cat</code> <code>$</code><code>file</code><code>|</code><code>grep</code> <code>$1|</code><code>sed</code> <code>'s/^ *//g'</code><code>|</code><code>awk</code> <code>-F</code><code>'[ :]+'</code> <code>'{print $10}'</code><code>`</code>
<code> </code><code>#B*8/1024/1024=Mb</code>
<code> </code><code>speed_RX=`</code><code>echo</code> <code>"scale=2;($RX_bytes_later - $RX_bytes)*8/1024/1024/10"</code><code>|</code><code>bc</code><code>`</code>
<code> </code><code>speed_TX=`</code><code>echo</code> <code>"scale=2;($TX_bytes_later - $TX_bytes)*8/1024/1024/10"</code><code>|</code><code>bc</code><code>`</code>
<code> </code><code>printf</code> <code>"%-3s %-3.1f %-10s %-4s %-3.1f %-4s\n"</code> <code>IN: $speed_RX Mb</code><code>/s</code> <code>OUT: $speed_TX Mb</code><code>/s</code>
<code>done</code>
本文转自激情燃烧的岁月博客51CTO博客,原文链接http://blog.51cto.com/liuzhengwei521/1786936如需转载请自行联系原作者
weilovepan520