日常笔记

随用随记

  1. curl命令行工具默认超时时间 300秒
    来源:源码 https://github.com/curl/curl/blob/master/lib/connect.h

  2. 批量杀进程
    ps -ef |grep 进程名| grep -v grep | awk '{print $2} |xargs kill'
    解释:

    • ps -ef 列出所有进程
    • | 管道符 将前一个命令结果通过管道符流入到下一个命令
    • grep 查找,不加参数表示直接查找后边字符串;-o only表示只显示需要查找的字符;-E 正则查找 ;-v忽略带后边字串的行
    • awk 一个文本处理工具稍复杂,相关文档可在此查阅 http://www.runoob.com/linux/linux-comm-awk.html
  • xargs 将参数列表转换成小块分段传递给其他命令
  1. homebrew 一些用法
  • brew search [TEXT|/REGEX/] 查找应用,支持通配符
    eg: brew search golang
  • brew (info|home|options) [FORMULA...] 查看应用信息
    eg: brew info wget
  • brew install FORMULA...
    eg: brew install git
  • brew update 更新应用
    eg: brew update git
  • brew upgrade [FORMULA...] 升级brew
  • brew uninstall FORMULA... 卸载应用
  • brew list [FORMULA...] 列出已经安装的应用
  • brew outdated 列出已经过时的应用
  • brew cleanup 清理所有包的旧版本
  • brew cleanup $FORMULA 清理指定包的旧版本
  • brew cleanup -n 查看可清理的旧版本包,不执行实际操作
  • brew deps --installed --tree 查看已安装应用的依赖关系树
  1. 正则提取药方
    三个测试文件如下
    example1.txt
    example2.txt
    example3.txt
    要求:匹配各个药方小标题以及内容。
    正则表达式:【(.+?)】([\n\w\W]+?)(?
  • 【(.+?)】 匹配标题
  • ([\n\w\W]+?)要求两个标题间有字符 .并不能匹配到换行符
  • (?
  • (?=[【$]) 零宽断言,匹配但不包含下个标题
    匹配结果如下:


  1. Nginx日志分析
IP相关统计
  • 统计IP访问量
awk '{print $1}' access.log | sort -n | uniq | wc -l
  • 查看某一时间段的IP访问量(4-5点)
grep "07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l   

  • 查看访问最频繁的前100个IP

awk '{print $1}' access.log | sort -n |uniq -c | sort -rn | head -n 100

  • 查看访问100次以上的IP
awk '{print $1}' access.log | sort -n |uniq -c |awk '{if($1 >100) print $0}'|sort -rn
  • 查询某个IP的详细访问情况,按访问频率排序
grep '104.217.108.66' access.log |awk '{print $7}'|sort |uniq -c |sort -rn |head -n 100
页面访问统计
  • 查看访问最频的页面(TOP100)
awk '{print $7}' access.log | sort |uniq -c | sort -rn | head -n 100
  • 查看访问最频的页面([排除php页面】(TOP100)
grep -v ".php"  access.log | awk '{print $7}' | sort |uniq -c | sort -rn | head -n 100   
  • 查看页面访问次数超过100次的页面
cat access.log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less
  • 查看最近1000条记录,访问量最高的页面
tail -1000 access.log |awk '{print $7}'|sort|uniq -c|sort -nr|less
每秒请求量统计
  • 统计每秒的请求数,top100的时间点(精确到秒)
awk '{print $4}' access.log |cut -c 14-21|sort|uniq -c|sort -nr|head -n 100
每分钟请求量统计
  • 统计每分钟的请求数,top100的时间点(精确到分钟)
awk '{print $4}' access.log |cut -c 14-18|sort|uniq -c|sort -nr|head -n 100
每小时请求量统计
  • 统计每小时的请求数,top100的时间点(精确到小时)
awk '{print $4}' access.log |cut -c 14-15|sort|uniq -c|sort -nr|head -n 100
性能分析
  • 在nginx log中最后一个字段加入$request_time

  • 列出传输时间超过 3 秒的页面,显示前20条

cat access.log|awk '($NF > 3){print $7}'|sort -n|uniq -c|sort -nr|head -20
  • 列出php页面请求时间超过3秒的页面,并统计其出现的次数,显示前100条
cat access.log|awk '($NF > 1 &&  $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
蜘蛛抓取统计
  • 统计蜘蛛抓取次数
grep 'Baiduspider' access.log |wc -l
  • 统计蜘蛛抓取404的次数
grep 'Baiduspider' access.log |grep '404' | wc -l
  1. nl 命令
  • nl 输出文件并计算行号
  • nl -b a 空行也加入行号
  • nl -n rz 加入前导0(默认为6位,调整位数可以加入参数-w 3调整为3位)

你可能感兴趣的:(日常笔记)