一、学习资料
高级Bash脚本编程指南
LINUX与UNIX SHELL编程指南
鸟哥的Linux私房菜
IBM DeveloperWorks
阮一峰的《bash脚本教程》
课程pdf
bash教程.pdf (7.0 MB)
演练服务器
主机:shell.testing-studio.com 30
帐号:学员手机号后8位
密码:参考每期学员通知
shell编辑器
vs code
shell format插件
正则
image1920×1080 208 KB
image1920×1080 219 KB
image1920×1080 215 KB
演练文件
cp /tmp/nginx.log ~/nginx.log
使用less命令替代more与vim来分析文件内容,键入q表示退出交互浏览模式。
文件内容格式
223.104.7.59--[05/Dec/2018:00:00:01+0000] "GET /topics/17112 HTTP/2.0"2009874"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.0400.040.123.125.71.60--[05/Dec/2018:00:00:02+0000] "GET /yuanyibo/topics?locale=en HTTP/1.1"20012164"-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"0.0320.032.IP 空 空 时间戳 用户请求(请求方法 地址 http协议版本) 状态码 字节数 Refer UserAgent 访问速度 访问速度 空
常用分析命令
less:分页查询日志
sort:sort 命令将以默认的方式将文本文件的第一列以ASCII 码的次序排列,并将结果输出到标准输出。
sort nginx.log#默认排序
sort -nr nginx.log# 按数值大小(-n)倒序(-r)
uniq:用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。当重复的行并不相邻时,uniq 命令是不起作用的,所以要去除文件中重复的行,要先用sort命令排序再去重
uniq -c nginx.log #检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数
课间作业
1.日志数据检索:find_error_log
编写一个函数,找出log中的404 500的报错 考察严谨性,某次训练没有一人做对
回复的时候按照这个格式
find_error_log(){
less nginx.log | grep -E'(" 404 |" 500 )'less nginx.log | awk'$9~/404|500/'
}
2.日志数据统计:find_top_3
找出访问量最高的ip, 统计分析,取出top3的ip和数量,打印出来。把函数和执行结果贴到回复里。记得使用代码格式化
find_top_3(){
less nginx.log| awk '{print $1}'|sort|uniq -c|sort -nr|head -3
}
3.数据文件修改并统计:url_avg_time
找出首页访问 / 的平均响应时间,把函数与结果打印出来贴到回复里
首页访问示例,get后面的地址是/,每次访问的响应时间是倒数第二个字段
136.243.151.90--[05/Dec/2018:00:00:51+0000] "GET / HTTP/1.1"20010088"-" "Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)"0.0780.078.
url_avg_time(){
less nginx.log|awk '$7="/"'|awk '{sum+=$(NF-1)} END {print "Average=" sum/NR}'
}# awk在统计时若遇到无法计数的数字,就会默认按值为0处理
课后作业 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 10请求量的url pattern
类似
288 url1
3000 url2
url_summary(){}