摘自《大型分布式网站架构设计与实践》 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 | &&或;可合并为一行。 |
新闻热点
疑难解答