读书笔记-在线日志分析的常用命令摘自《大型分布式网站架构设计与实践》 4.1在线日志分析
1.基础命令
操作
命令
说明
查看文件的内容
cat-naccess.log
-n显示行号
分页显示文件
moreaccess.log
Enter下一行,空格下一页,F下一屏,B上一屏
分页显示文件
lessaccess.log
输入/字符串可查找并高亮
显示文件尾
tail-n2-faccess.log
-n2显示最后2行,-f继续监听不退出
内容排序
sort-k2-t''-naccess.log
-k指定排序列,-t指定列分隔符,-n按数字顺序
字符统计
wc-laccess.log
-l统计行数,-c字符数,-L最长行长度,-w单词数
查看重复出现的行
sorttestfile|uniq-c-d
uniq去重,-c统计重复次数,-d只显示重复的
字符串查找
grep'G.*T'access.log
查找G开头T结尾的字符串
文件查找
find/home/java-nameaccess.log
递归/home/java的子目录找名为access.log
表达式求值
exPR10\*3
计算10*3,其中\*表示转义*不解读为通配符
表达式求值
exprlength"thisisatest"
计算长度
归档文件
tar-cfaaa.tarf1f2
-c创建,-f指定包名
归档文件
tar-xfaaa.tar
-x解压
URL访问
curlwww.google.com
不带参返回响应体,-i返回带响应头,-I仅返回响应头
查看CPU的load
uptime
查看CPU使用率
top|grepCpu
按1查看每个核,按shift+H按线程查看
查看CPU使用率
top-p2864
查看指定进程
磁盘剩余空间
df-h
磁盘剩余空间
du-d1-h/home/java
分析目录的磁盘使用。-d设置递归深度
网络traffic
sar-nDEV11
DEV查看各个网卡,1秒抽样,1总共取一次
磁盘I/O
iostat-d-k
内存使用
free-m
通常是看“-/+buffers/cache”对应的used和free
内存使用
vmstat
查看swapI/O
2.sed编辑器
操作
命令
说明
文本替换
sed's/xxx/yahoo/'access.log|head-10
不会修改原文件
输出指定的行
sed-n'2,6p'access.log
输出2-6行
删除行
sed'/QQ/d'access.log
/d排除含关键字qq的行
整行替换
sed-e'/google/c\hello'access.log|head-10
/c替换的是整个匹配的行
多个命令合并
sed-n'1,5p;1,5='access.log
边打印行边打印行号
3.awk程序
操作
命令
筛选行,打印指定列
awk'/google/{print$0,$6}'access.log|head-10
按条件打印
awk'length($0)>40{print$3}'access.log|head-10
格式化输出
awk'{line=sprintf("method:%s,response:%s",$3,$7);printline}'access.log|head-10
4.实用例子
操作
命令
说明
查看请求访问量
访问量前10的ip
cataccess.log|cut-f1-d""|sort|uniq-c|sort-k1-n-r|head-10
cut部分表示取第1列即IP列,取第4列则为URL的访问量
查看最耗时的页面
cataccess.log|sort-k2-n-r|head-10
按第2列响应时间逆序排序
统计404请求的占比
总请求数
exporttotal_line=`wc-laccess.log|cut-f1-d""`
404请求数
exportnot_found_line=`awk'$6=='404'{print$6}'access.log|wc-l`
占比
expr$not_found_line\*100/$total_line
&&或;可合并为一行。