加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

用perl来改写shell

发布时间:2020-12-16 00:37:27 所属栏目:大数据 来源:网络整理
导读:查看Web服务器的并发请求数及其TCP连接状态的命令 netstat?-n?|?awk?'/^tcp/?{++S[$NF]}?END?{for(a?in?S)?print?a,?S[a]}'?? 据说是从新浪互动社区事业部技术总监王老大那儿获得的,非常不错。 返回结果一般为 LAST_ACK?247?(正在等待处理的请求数)? SYN_

查看Web服务器的并发请求数及其TCP连接状态的命令

 
 
  1. netstat?-n?|?awk?'/^tcp/?{++S[$NF]}?END?{for(a?in?S)?print?a,?S[a]}'??

据说是从新浪互动社区事业部技术总监王老大那儿获得的,非常不错。

返回结果一般为

 
 
  1. LAST_ACK?247?(正在等待处理的请求数)?
  2. SYN_RECV?66?
  3. ESTABLISHED?1094?(正常数据传输状态)?
  4. FIN_WAIT1?258?
  5. FIN_WAIT2?629?
  6. TIME_WAIT?4792?(处理完毕,等待超时结束的请求数)?

其他参数说明:

 
 
  1. CLOSED:无连接是活动的或正在进行?
  2. LISTEN:服务器在等待进入呼叫?
  3. SYN_RECV:一个连接请求已经到达,等待确认?
  4. SYN_SENT:应用已经开始,打开一个连接?
  5. ESTABLISHED:正常数据传输状态?
  6. FIN_WAIT1:应用说它已经完成?
  7. FIN_WAIT2:另一边已同意释放?
  8. ITMED_WAIT:等待所有分组死掉?
  9. CLOSING:两边同时尝试关闭?
  10. TIME_WAIT:另一边已初始化一个释放?
  11. LAST_ACK:等待所有分组死掉?

本人shell中awk语法不是特别熟悉,老是关键时刻用到这个的时候,不会写。顺便用perl改写了下,哈哈

 
 
  1. #!/usr/bin/perl?-w?
  2. ?
  3. use?strict;?
  4. ?
  5. our %hash;?
  6. ?
  7. open?TCP,'netstat?-n|'?or?die?"$!n";?
  8. ?
  9. while?(?<TCP>?)?{?
  10. ???????chomp;?
  11. ???????next?unless?/^tcp/;?
  12. ?
  13. ???????if?(?exists?$hash{(split?/s+/)[5]}?)?{?
  14. ???????????$hash{(split?/s+/)[5]}?++;?
  15. ???????}?else?{?
  16. ???????????$hash{(split?/s+/)[5]}?=?1;?
  17. ???????}?
  18. ?
  19. }?
  20. ?
  21. close?TCP;?
  22. ?
  23. while?(?my($key,$val)?=?each?%hash?)?{?
  24. ???????print?"$keyt$valn";?
  25. }?

一样的结果

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读