Shell 分析服务器日志命令集锦
1、查看有多少个IP访问
awk '{print $1}' log_file | sort | uniq | wc -l
2、查看某一个页面被访问的次数
grep "/index.php" log_file | wc -l
3、查看每一个IP访问了多少个页面
awk '{++S[$1]} END {for (a in S) print a, S[a]}' log_file | sort -n -k 2
4、将每个IP访问的页面数排序
awk '{++S[$1]} END {for (a in S) print S[a], a}' log_file | sort -n
5、查看指定IP访问记录
grep ^111.111.111.111 log_file | awk '{print $1,$7}'
6、过滤搜索引擎流量
awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' | sort | uniq | wc -l
7、指定时间段IP统计
awk '{print $4,$1}' log_file | grep '16/Aug/2015:14' | awk '{print $2}' | sort | uniq | wc -l
8、访问量TOP10 IP
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
9、热门页面TOP10
cat log_file | awk '{print $11}' | sort | uniq -c | sort -nr | head -10
10、子域名访问统计
cat access.log | awk '{print $11}' | sed -e 's/http:\/\///' -e 's/\/.*//' | sort | uniq -c | sort -rn | head -20
11、大文件传输统计
cat www.access.log | awk '($7~/\.php/){print $10,$1,$4,$7}' | sort -nr | head -100
12、大文件请求统计
cat www.access.log | awk '($10 > 200000 && $7~/\.php/){print $7}' | sort -n | uniq -c | sort -nr | head -100
13、客户端耗时统计
cat www.access.log | awk '($7~/\.php/){print $NF,$1,$4,$7}' | sort -nr | head -100
14、高耗时页面统计
cat www.access.log | awk '($NF > 60 && $7~/\.php/){print $7}' | sort -n | uniq -c | sort -nr | head -100
15、传输超时文件统计
cat www.access.log | awk '($NF > 30){print $7}' | sort -n | uniq -c | sort -nr | head -20
16、进程数量统计
ps -ef | awk -F ' ' '{print $8,$9}' | sort | uniq -c | sort -nr | head -20
17、Apache并发统计
netstat -an | grep ESTABLISHED | wc -l
18、连接状态分析
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
19、TCP连接深度分析
netstat -n | awk '/^tcp/ {
n=split($(NF-1),array,":");
if(n<=2) ++S[array[1]];
else ++S[array[4]];
++s[$NF];
++N
}
END {
for(a in S) printf("%-20s %s\n", a, S[a]);
printf("%-20s %s\n","TOTAL_IP",length(S));
for(a in s) printf("%-20s %s\n",a, s[a]);
printf("%-20s %s\n","TOTAL_LINK",N);
}'
20、扩展工具集
流量统计(GB)
cat access.log | awk '{sum+=$10} END {print sum/1024/1024/1024}'
实时并发监控
watch "netstat -n | awk '/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}'"
连接状态说明
状态码 描述
LAST_ACK 等待最终ACK确认关闭连接
SYN_RECV 等待处理的握手请求
ESTABLISHED 活跃连接状态
TIME_WAIT 连接关闭后的缓冲状态
提示:将log_file替换为实际日志文件路径,时间格式需根据日志实际情况调整
658

被折叠的 条评论
为什么被折叠?



