归档2015年在br做运维时常用的命令,主要梳理出日志的过滤操作。
对于日志文本的处理,常用的还是sed、awk,具体如下:
统计ip访问量:
cat nginx.log |awk '{print $2,$11}' | awk ' {++S[$1]; V[$1]+=$2 } END {for(a in S) print a, S[a], V[a]}' |sort -nrk2 |head
222.93.28.28 132171 15367772663
115.168.84.186 130746 29782262441
114.221.180.61 126604 22408007956
61.187.159.136 108039 4166438896
通过sed正则匹配需要的域
head -n 20 nginx.log |sed 's/\([^ ]*\) .*\(imei\=[^&]*\).*/\1,\2/'
过虑前:
125.126.250.49 - - [09/Jul/2015:00:00:01 +0800] "GET /client/spiritscreen/recommend?version=12.150417&imei=51B5ECC4A771CEF1D3BA81B34F4416C0&channelId=jltop_m_scb07&p=com.GreanMaster.pixelmonmcpecraftrun2 HTTP/1.0" 200 0.032 938 "-" "-" "125.126.250.49" "-" "-"
过虑后:
125.126.250.49,imei=51B5ECC4A771CEF1D3BA81B34F4416C0
## 其中:
[^ ]:表示匹配非空
\1,\2:表示取出前面括号内的对应内容,并逗号隔开
统计tcp连接情况
[root@zabbix ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 68
SYN_SENT 3
ESTABLISHED 72
LAST_ACK 3
nginx变量的统计:$body_bytes_sent
cat down.nginx.log |grep 23/May/2015 |awk '{print $11}' |awk '{sum += $1} END {print "Sum = ", sum}'
Sum = 2695161432870
排序过虑下载频率
cat down.nginx.log |awk '{print $8}' |sed 's/_t[0-9]\{11\}//' |sed 's/?.*$//' |sed 's/^\/.*[ ]//' |sort |uniq -c |sort -n > sort_0401
nginx status
wget -O- -q -t 3 -T 3 --no-check-certificate http://172.16.114.54:80/status
nc使用
nc -z -w 1 -u 172.16.114.22 123 #加-u可测试udp
Connection to 172.16.114.22 123 port [udp/ntp] succeeded!
远程ssh机箱上的reset健重启
## 有时候linux由于硬盘或者其它原因,某个进程挂住怎么也杀不死,输入reboot也无法重启
## 这时候,一般只能按机箱上的reset健来重启了,下面两行命令可以搞定:
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
小时的请求量进行统计
cat nginx.log |sed 's/.*\[\(.*2015:[^:]*\).*].*/\1/' | sort |uniq -c
10762 14/Feb/2015:14
1876 14/Feb/2015:15
502 14/Feb/2015:19
378 14/Feb/2015:20
rsync的几种操作
rsync -avz 172.16.190.56::data /data0/wwwroot/data/ --files-from=/data0/logs/sort_miss_04292015 --progress
rsync -avz 172.16.11.11::data/xbz1.apk /var/log/ --progress
rsync 172.16.17.11::d0_data/ /data0/ --files-from=file.list -artv >> ~/rsync.log
rsync -avz root@172.16.18.11::data_s/d /data0/ --list-only |grep -v -E '^d' > file.list