日志分析常用命令
- 查看文件内容
cat access.log
- 分页显示文件
less access.log
使用/GET查找字符串GET
- 显示文件尾
tail -n2 access.log
-f 可以让tail程序不退出
- 内容排序
sort -n sortfile
-n是指定按数字顺序进行排序
sort -k 2 -t ’ ’ -n access.log
- 字符统计
wc -l accesslog统计行数
wc -c access.log统计字节数
wc -L access.log统计最长行的长度
wc -waccess.log统计文本包含了多少个单词
- 查看重复出现的行
uniq命令可以用来显示文件中行重复的次数,或者只显示仅仅出现一次的行,以及仅仅显示重复出现的行;并且uniq的屈从针对的只是连续的两行,因此他经常与sor结合使用。
sort uniqfile | uniq -c 通过sort排序后再通过uniq去重统计,-c参数用来在每一行的最前面显示该行出现的次数。
- 字符串查找
grep XXX access.log
grep -c XXXX access.log -c参数可以显示查找到的行数
grep ‘G.*T’ access.log 支持正则表达式,比如查找G开头T结尾的字符串
- 文件查找
find /home -name access.log
- 归档文件
tar -cf XXX.tar file1 file2压缩
tar -xf XXX.tar解压
- URL访问工具
curl www.baidu.com发起网页请求
curl -i www.baidu.com返回带header的文档
- 查看请求访问量
cat access.log | cut -f1 -d " " | sort | uniq -c | sork -k1 -n -r| head -10 访问量排名前10的IP地址
cut f1 -d " "表示截取按“ ”分的第一列
cat access.log | cut -f4 -d " " | sort | uniq -c | sork -k1 -n -r| head -10访问量排名前10的url地址
- 查看最耗时的页面
cat access.log | sort -k 2 -n -r | hrad -10查看最耗时的页面
- 统计404请求的占比
export total_line=`wc -l access.log | cut -f1 -d " "` && export not_found_line=`awk ‘$6==‘404’{print $6}’ access.log | wc -l` && expr $not_found_line * 100 / $total_line
- awk程序
awk使用的通用格式如下:
awk [option] ‘pattern {action}’ file
其中,optio为命令的选项,pattern为行匹配规则,action为执行的具体操作;如果没有pattern,则对所有行执行action,而如果没有action,则打印所有匹配的行;file为输入的文件。awk ‘{print $1}’ access.log | hrad 10 打印文件指定的列
print命令用来格式化输出,支持转义字符,awk默认用空格将一行分割成多个列,可以使用-F来指定列的分割符。
awk ‘/google/{print $5, $6}’ access.log | head 10 使用/google/查找包含google的行,并打印第五,第六列。
awk ‘length($0)>40{print $3}’ access.log | head -10 查找length大于40的行,并且打印该行的第三列。$0表示当前的行,length($0)用来获取当前行的长度,然后通过print $3打印第三列。