课程价值
- 掌握linux的基本命令
- 掌握shell的管道机制
- 掌握三剑客的常见用法
大纲
- linux数据统计基本命令 sort head tail uniq less vim
- linux系统命令 ps top netstat
- 实战环境
时长
60~90分钟
ppt
学习资料
- 高级Bash脚本编程指南
- LINUX与UNIX SHELL编程指南
- 鸟哥的Linux私房菜
- IBM DeveloperWorks
- 阮一峰的《bash脚本教程》
- Google
代码格式化
作业
演练数据
把/tmp/nginx.log文件复制到自己的主目录下,用来演练
223.104.7.59 - - [05/Dec/2018:00:00:01 +0000] "GET /topics/17112 HTTP/2.0" 200 9874 "https://www.googleapis.com/auth/chrome-content-suggestions" "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/70.0.3538.75 Mobile/15E148 Safari/605.1" 0.040 0.040 .
实战内容
- 日志数据检索
- find_error_log 找出log中的404 500的报错 考察严谨性,某次训练没有一人做对
- find_before 找出500错误时候的上下文 考察grep高级用法
- 日志数据统计
- find_top_10 找出访问量最高的ip 统计分析
- 数据文件修改
- url_summary 找出访问量最高的页面地址 借助于sed的统计分析
find_error_log
编写一个函数 find_error_log()
找出log中的404 500的报错 考察严谨性,某次训练没有一人做对
回复的时候按照这个格式
find_error_log() {
}
find_before
找出500错误时候的上下文,找出500错误的前两行 考察grep高级用法
find_before(){
}
find_top_10
找出访问量最高的ip, 统计分析,取出top10
find_top_10(){
}
课后作业 url_summary
找出访问量最高的页面地址 借助于sed的统计分析
- /topics/16689/replies/124751/edit 把数字替换为 /topics/int/replies/int/edit
- /_img/uploads/photo/2018/c54755ee-6bfd-489a-8a39-81a1d7551cbd.png!large 变成 /_img/uploads/photo/2018/id.png!large
- /topics/9497 改成 /topics/int
- 其他规则参考如上
输出
- url pattern对应的请求数量
- 取出top 20请求量的url pattern
类似
nnn urlxxx
mmm urlxxx
url_summary(){
}
url_avg_time
计算出/topics页面的平均响应时间
url_avg_time(){
}
课后调查问卷
find_error_log(){awk ‘$0~/404|500/ {print $0}’ }
cream
(Hei蛋炒饭)
6
egrep '(404) | (500) ' nginx.log
bash
find_error_log() { cat nginx.log |grep '404'|'500'}```
‘’'bash
find_error_log(){
cat ~/ngnix.log | grep 404
cat ~/ngnix.log | grep 500
}
‘’’
Hurt
(hurt)
9
find_error_log()
{
grep 'HTTP/1.1" 404' nginx.log
grep 'HTTP/1.1" 500' nginx.log
}
kers
(坨坨君)
10
{
cat nginx.log |awk '{if($9==404 || $9==500) print $0}'
}
find_error_log ()
{
awk '$9~/404|500/' nginx.log | wc -l
}
cream
(Hei蛋炒饭)
12
find_top_10() { awk '{print $1}' nginx.log| sort | uniq -c | sort -r | head -10 }
find_top_10(){
awk '{print $1}' | sort | uniq -c | sort | awk 'NR=1 {print $1}'
}
find_top_10(){
cat nginx.log | awk -F " " '{print $3}'|sort|uniq -c|sort -nrk 1|awk -F " " '{print $2}' |head -10
}
xym
(徐燕民)
15
find_top10 ()
{
awk '{print $1}' nginx.log | sort | uniq -c | sort -rn | head -10
}
1 个赞
find_top_10() { awk $1 ngnix.log | sort | unique -l | head -10 }
kers
(坨坨君)
17
find_top_10()
{
cat xx.txt | awk '{print $1}'| sort |uniq -c|sort -rn|awk 'NR<=10 {print $1}'
}
awk '{print $1} ' nginx.log |sort|uniq -c| awk '{if(NR<=10){print $1}}' nginx.log
find_top_10(){
cat nginx.log | awk ‘{print $1}’ | sort | uniq - c | sort - rn | head - 10
}
find_top_10(){
awk '{print$1}' nginx.log | sort |uniq -c|awk '{print$1,$2}'|sort -rn |head -10
}
Hurt
(hurt)
23
url_avg_time(){
grep '/topics' nginx.log | awk '{a+=$32}END{print a/NR}'
}
kers
(坨坨君)
24
url_avg_time()
{
cat nginx.log |awk 'BEGIN{total=0;count=0} / \/topics / {count+=1;total+=$(NF-1);print total} END{print total/count}'
}