ps -ef |grep httpd|wc -l
或
ps -aux |grep httpd |wc -l
或
ps -aux |grep httpd |wc -l
2.查看当前Apache并发连接数和TCP连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
其中的SYN_RECV表示正在等待处理的请求数;
ESTABLISHED表示正常数据传输状态;
TIME_WAIT表示处理完毕, 等待超时结束的请求数。
关于TCP状态的变迁,可以从下图形象地看出:
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常 数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等 待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等 待所有分组死掉
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常 数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等 待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等 待所有分组死掉
2.查看当前Apache并发连接数和TCP连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
3.通过日志查看当天ip连接数,过滤重复
cat access.log | grep "15/Mar/2013" | awk '{print $2}' | sort | uniq -c | sort -nr
4.查看日志中访问次数最多的前10个IP
cat access.log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less
5.当天ip连接数最高的ip都在干些什么
cat access.log | grep "15/mar/2013" | grep "199.21.99.80" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
6.当天访问页面排前10的url:
cat access.log | grep "15/Mar/2013" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
7.用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr
返回如下类似内容:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
1000 packets captured
1077 packets received by filter
0 packets dropped by kernel
932 IP 64.120.194.152
35 IP 83.222.126.3
26 IP 212.124.114.16
7 IP 50.115.161.181
8.接着从日志里查看该ip在干嘛:
cat access.log | grep 199.21.99.80| awk '{print $1"/t"$8}' | sort | uniq -c | sort -nr | less
9.当前WEB服务器中联接次数最多的20条ip地址:
netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r | head -n 20
10.查看最近访问量最高的文件
cat access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less
11.查看日志中访问超过100次的页面
cat access.log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less
12,列出传输时间超过 30 秒的文件
cat access.log|awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -20
问题1: 在apachelog中找出访问次数最多的10个IP。
awk '{print $1}' access.log |sort |uniq -c|sort -nr|head -n 10
- awk 首先将每条日志中的IP抓出来,如日志格式被自定义过,可以 -F 定义分隔符和 print指定列;
- sort进行初次排序,为的使相同的记录排列到一起;
- upiq -c 合并重复的行,并记录重复次数。
- head进行前十名筛选;
- sort -nr按照数字进行倒叙排序。
问题2:在apache日志中找出访问次数最多的几个分钟。
awk '{print $4}' access_log |cut -c 14-18|sort|uniq -c|sort -nr|head
awk 用空格分出来的第四列是[09/Jan/2010:00:59:59;
cut -c 提取14到18个字符
没有评论