1、nethogs工具
while true;
do
echo "-----------------------------------------------------------------------" >> /tmp/net_process.log
date >> /tmp/net_process.log
nethogs -t -d 3 -c 5 &>> /tmp/net_process.log
sleep 10
done
简单讲述一下此命令的使用帮助:
-t 表示非交互显示,这里主要是为了写入本地的文本文件
-d 3表示每隔3s刷新一次
-c 5表示打印5次,为什么要打印5次呢?因为前面几次的流量都不准,所以基本是第3-5次流量是比较准确的。所有的监控工具基本都有这个毛病
可以把上面脚本做个守护进程运行,效果如下所示:
Refreshing:
wget/13089/0 140.115 9734.96
sshd: root@pts/1/11359/0 1.03906 0.234375
/usr/bin/node_exporter/904/0 0 0
/usr/local/cloudmonitor/bin/argusagent/970/0 0 0
/usr/local/aegis/aegis_client/aegis_10_97/AliYunDun/25138/0 0 0
可以看到wget命令的流量很大,主要是看最后一段是9734.96
数字,单位是Kb/s(不是带宽),说明目前是9M的速度在下载东西
注意:主要是看最后一列
2、iftop命令
iftop也是一个交互的,但是事实上我们不直接交互使用,还是要写入文本文件,脚本如下所示:
while true;
do
echo "-------------------------------------------------------" >> /tmp/network.log
date >> /tmp/network.log
iftop -i eth0 -N -P -t -L 5 -s 3 -u bytes &>> /tmp/network.log
sleep 10
done
主要是说一下-s 3
,测试了一下如果是1或者2的话结果不是很准确,这里使用3比较好,-u bytes
是为了用速度的计算公司显示,因为默认是带宽,个人不是很习惯这种显示方式,还要除以8才行
其他命令就不再解释了,直接使用就行,打印的内容如下所示:
其中=>表示本地上传到远端主机,而<=表示从远端主机下载的流量。