问题描述,下图是nginx访问日志,请你按分钟统计各状态码的个数。
#获取ip,以(空格和:)同时做分隔符
IP=`ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'`
IP=`ifconfig eth0|grep 'inet addr'|awk -F '[ :]' '{print $13}'`
#IP=`/sbin/ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/1p'|sed -n '1p'`
#查看Web服务器(nginx apache)的并发请求数及其TCP连接状态
netstat
-n |
awk
'/^tcp/ {++a[$NF]} END {for(key in a) print key,"\t",a[key]}'
ss -ant |
awk
'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
那我们再来说说上边例子中的a[$1]++
(1)Awk在读取第一行的时候,会读取这个数组,此时的数组是这样的:a[192.168.3.1]++
(2)此时a[192.168.3.1]的值是未定义的。
但是由于后边有运算符号++。Awk会将数字0自动赋值给a[192.168.3.1]。然后在做++运算
(3)此时a[192.168.3.1]做++ ,也就是0+1得到的值为1
(4)那么在读第二个192.168.3.1时,此时a[192.168.3.1]的值已经经过上次运算为1.此时在做一次运算。也就是1+1 现在a[192.168.3.1]的值为2。
(5)总结,最后的值是多少,也就意味着,192.168.3.1运算了多少次,也意味着192.168.3.1出现了多少次。
chkconfig |egrep 'httpd|mysqld|zabbix*|iptables'
转载于:https://blog.51cto.com/yanjiu/1911601