程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Linux主機網絡流量監控ifstat

Linux主機網絡流量監控ifstat

編輯:JAVA綜合教程

Linux主機網絡流量監控ifstat


本監測方案是用ifstat。安裝方法參考:
http://man.linuxde.net/ifstat
1、下載
http://gael.roualland.free.fr/ifstat/ (官網) wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz
來自: http://man.linuxde.net/ifstat
也可以通過浏覽器下載,然後用secureCRT上傳;
2、安裝
tar -xzvfifstat-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後面就可以。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved