Chinaunix首页 | 论坛 | 博客
  • 博客访问: 63402
  • 博文数量: 24
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-14 04:58
文章分类
文章存档

2016年(24)

我的朋友

分类: LINUX

2016-11-03 21:45:01

本监测方案是用ifstat。安装方法参考:

1、下载
(官网) wget ifstat-1.1.tar.gz
来自: 也可以通过浏览器下载,然后用secureCRT上传;
2、安装
tar -xzvf ifstat-1.1.tar.gz,configure、make、make install
3、编写脚本

  1. [root@localhost tools]# cat nic.sh
  2. #!/bin/bash
  3. start(){
  4. /opt/tools/ifstat_install/bin/ifstat -i eth1 -t >/opt/tools/nic.log &
  5. while [ 1 -eq 1 ]
  6. do
  7. date +%F\ %T >>/opt/tools/nic.log
  8. sleep 86400
  9. done
  10. }

  11. stop(){
  12. # if stay here,kill ifstat,sleep not execute.
  13. #echo 'kill nic.sh:'
  14. #ps -ef |grep nic |grep -v grep |awk '{print $2}' |while read pid1
  15. #do
  16. #kill -9 $pid1
  17. #echo $pid1
  18. #done

  19. echo 'kill ifstat:'
  20. ps -ef |grep ifstat |grep -v grep |awk '{print $2}' |while read pid2
  21. do
  22. kill -9 $pid2
  23. echo $pid2
  24. done

  25. echo 'kill sleep:'
  26. ps -ef |grep sleep |grep -v grep |awk '{print $2}' |while read pid3
  27. do
  28. kill -9 $pid3
  29. echo $pid3
  30. done


  31. echo 'kill nic.sh:'
  32. ps -ef |grep nic |grep -v grep |awk '{print $2}' |while read pid1
  33. do
  34. kill -9 $pid1
  35. echo $pid1
  36. done
  37. }
  38. case $1 in
  39. start)
  40. start
  41. ;;
  42. stop)
  43. stop
  44. ;;
  45. *)
  46. printf 'please input start|stop!\n'
  47. exit 1
  48. ;;
  49. esac

  50. #select process:
  51. #ps -ef |awk '/nic/||/ifstat/||/sleep/{print}'
  52. [root@localhost tools]#./nic.sh start &
执行了三次,查看进程:

  1. [mcbadm@loophole-scan ~]$ ps -ef |awk '/nic/||/ifstat/||/sleep/{print}'
  2. mcbadm 13472 12803 0 15:08 pts/1 00:00:00 /bin/bash ./nic.sh start
  3. mcbadm 13473 13472 0 15:08 pts/1 00:00:00 /opt/proxy_security/ifstat_install/bin/ifstat -i eth0 -t
  4. mcbadm 13475 13472 0 15:08 pts/1 00:00:00 sleep 8640
  5. mcbadm 13476 12803 0 15:08 pts/1 00:00:00 /bin/bash ./nic.sh start
  6. mcbadm 13477 13476 0 15:08 pts/1 00:00:00 /opt/proxy_security/ifstat_install/bin/ifstat -i eth0 -t
  7. mcbadm 13479 13476 0 15:08 pts/1 00:00:00 sleep 8640
  8. mcbadm 13480 12803 0 15:08 pts/1 00:00:00 /bin/bash ./nic.sh start
  9. mcbadm 13481 13480 0 15:08 pts/1 00:00:00 /opt/proxy_security/ifstat_install/bin/ifstat -i eth0 -t
  10. mcbadm 13483 13480 0 15:08 pts/1 00:00:00 sleep 8640
  11. mcbadm 13485 12803 0 15:08 pts/1 00:00:00 awk /nic/||/ifstat/||/sleep/{print}
  12. [mcbadm@loophole-scan ~]$
不知道为啥,需要执行两次stop,才能关闭所有进程,不然会剩下几个sleep进程,这些sleep的父进程id与ifstat的一样。

#一天是86400秒,因为默认的ifstat -t 只能显示时、分、秒,不能显示日期,因为我想看到具体的时间所以就这么弄了。
然后定期可以去分析nic.log文件,查看该网卡的流量情况。
关于kill也可以写while的方式:#ps -ef |grep nic |grep -v grep |awk '{print $2}' |xargs -i kill -9 {}
有一个很怪的现象:当我把kill nic的语句写在前面的时候,执行stop就只能执行kill nic的语句块,后面两个kill ifstat和kill sleep就无法执行,如果删除了kill nic,后面两个就可以正常执行,通过打印pid发现,kill nic放前面的话,输出的有两个无效的pid,最后选择把kill nic放到了kill ifstat和kill sleep后面就可以。

阅读(1089) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~