Linux下监控进程的网络以及目标主机建立连接的网络流量

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才行
其他命令就不再解释了,直接使用就行,打印的内容如下所示:
Linux下监控进程的网络以及目标主机建立连接的网络流量
其中=>表示本地上传到远端主机,而<=表示从远端主机下载的流量。

Linux下监控进程的网络以及目标主机建立连接的网络流量

上一篇:ApplicationContext源码及其IOC容器初始化过程的简单介绍!


下一篇:Linux su命令:su命令语法、su root与su - root区别、su与sudo区别、su -c 参数的使用理解