linux 网站日志分析常用命令

1.进入存放日志的文件夹

cd d:/111

2.查看该文件下所有文档

ls

3.合并日志或其他文件

cat *.log > example.log #合并后缀为log的日志文件

cat 1.log 2.log > 3.log #合并指定的日志

4.提取百度蜘蛛(如果有错误,请参考:http://www.lirang.net/post/38.html)

grep "Baiduspider" example.log > baiduspider.txt #提取404、500等其他以此类推

5.同时提取符合两个属性的东西

egrep "Baiduspider|Googlebot" example.log > spider.txt #其他以此类推

6.提取百度蛛蛛访问产生的所有状态码和数量,并按降序排列

cat *.log |grep ‘Baiduspider’ | awk '{print $11}' |sort|uniq -c|sort -nr|awk '{print $2 "\t" $1}' >baiduma.log

或:awk '{print $11}'  baidu.log |sort|uniq -c|sort -nr |awk '{print $2 "\t" $1}' >baiduma.log

7.提取百度蜘蛛访问码为200的前100个页面及访问次数,并按降序排列

cat *.log |grep 'Baiduspider' | grep  ' 200 ' |awk '{print $5}' | sort | uniq -c | sort -nr | head -n 100 >baiduurl200.log

或:grep  ' 200 ' baidu.log  | awk '{print $5}' | sort | uniq -c | sort -nr | head -n 100 >baidu200.log

8.提取所有404、301、302等非正常状态码的页面并按降序排列

awk '($11 ~/404/)'   baidu.log | awk '{print $11,$5}' | sort >baidu404.log

9.计算蜘蛛抓取的不重复URL个数

cat access.log |grep Baiduspider+ |awk '{print $7}'|sort -u|wc

导出:cat access.log |grep Baiduspider+ |awk '{print $7}'|sort -u  >baiduspiderurl.txt

给每个URL加上抓取的次数:cat access.log |grep Baiduspider+ |awk '{print $7}'|sort |uniq -c >baiduspiderurl.txt

10.截取百度蜘蛛访问的来源IP、时间、抓取的URL、返回码和抓取的大小

grep "Baiduspider+" example.log |awk '{print $1 "\t" $4 "\t" $7 "\t" $8 "\t" $9 "\t" $10}' >Baiduspider.txt

11.上边命令中的$是根据这里自定义,自己对照自己的日志

虽然这个问题偏向Linux系统操作层面而非直接与Java相关,但我可以为你介绍一些常用的查看日志的命令,在开发环境中(尤其是基于Linux的服务端Java应用)这也是非常有用的技能。 在Linux中查看日志文件最常使用的命令包括`cat`,`less`, `more`, `tail`以及带有颜色高亮显示效果的`ccze`等工具,并且结合使用`grep`进行过滤查找也是非常常见的需求。 1. **Cat**:这个命令会将整个文本内容一次性全部输出到屏幕上。 ```bash cat /path/to/logfile.log ``` 然而对于大文件而言不建议用此方法因为可能会导致屏幕被大量信息刷满难以阅读并且无法滚动回溯。 2. **Less/More**:这两个工具都可以分页地展示文档内容但相比之下`less`功能更加强大支持向前及向后翻阅而`more`只可向下读取不能返回上一行或页面。 - 使用`q`退出浏览; - 可以上下左右键、空格键翻页; - `/pattern`搜索匹配的内容。 例如利用`less`打开日志并查询包含特定关键词的日志行: ```bash less +F logfile.log # 实时跟踪最新添加的日志条目直到按下Ctrl+C停止监听模式然后可以通过其他快捷键如?keyword来进行历史记录中的反向搜索 # 或者先启动less再按shift+F进入类似尾部追踪的状态 less logfile.log ``` 3. **Tail**:通常用来打印出指定文件的最后一部分数据,默认情况下为最后一屏的信息。加上参数-f可以让其持续监控新增加的数据。 例如一直关注某个正在写入的日志的变化情况: ```bash tail -f catalina.out # 对于Tomcat服务器来说catalina.out就是很典型的应用程序运行期标准输出流重定向后的目标之一 ``` 4. 如果安装了`ccze`(需自行确认环境是否具备),那么它能给普通纯文本形式的日志增添色彩标记从而更容易识别不同类型的事件。 ```bash tail -f access_log | ccze -A ``` 5. 结合Grep对海量日志做初步筛选是非常实用的做法比如找出所有含有错误(ERROR)级别的消息或是某一天内发生的活动。 ```bash grep 'ERROR' application.log # 获取所有的error级别日志 # 加上时间戳过滤条件 grep $(date +"%Y-%m-%d") myapp-debugging-info.txt # 这样就能拿到今天生成的相关联调试详情片段啦! # 当然也可以两者一起用同时限定日期范围和关键字 grep "WARN" catalina.out | grep "$(date --date="yesterday" +%Y-%m-%d)" ``` 6. 此外还有专门用于处理syslog格式(大多数守护进程默认采用该结构化布局存储自身运作状态报告)的专业软件像Logwatch,Swatch等等这里就不展开介绍了。 7. 对于Java应用程序开发者特别要注意的是如果是在生产环境下部署Web容器(Jetty,Tomcat...)或者框架(Spring Boot..),这些平台往往会自带私有的日志管理体系(SLF4J+Logback...,java.util.logging...).所以应当熟悉查阅对应官方手册了解具体配置项含义以便准确高效定位故障点。 8. 最近还流行起一种集中式管理分布式架构下的各类异构来源产生的非结构化半结构性元数据的方法——ELK(Elasticsearch Logstash Kibana)/EFK(Elastisearch Fluent-bit Kibana)...借助这类解决方案我们可以跨越多个主机甚至云端实例收集整理分析庞大的二进制流转换之后的文字描述进而绘制可视化图表辅助决策制定优化业务逻辑提高运维效率降低成本支出... 综上所述掌握基本shell脚本指令只是第一步更重要是要学会根据实际场景选择合适的技术手段灵活组合运用才能真正发挥最大价值!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值