随用随记
curl命令行工具默认超时时间 300秒
来源:源码 https://github.com/curl/curl/blob/master/lib/connect.h-
批量杀进程
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 将参数列表转换成小块分段传递给其他命令
- 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 查看已安装应用的依赖关系树
- 正则提取药方
三个测试文件如下
example1.txt
example2.txt
example3.txt
要求:匹配各个药方小标题以及内容。
正则表达式:【(.+?)】([\n\w\W]+?)(?<![见和])(?=[【$])
- 【(.+?)】 匹配标题
- ([\n\w\W]+?)要求两个标题间有字符 .并不能匹配到换行符
- (?<!见) 下个标题前的汉字不为 见与和
-
(?=[【$]) 零宽断言,匹配但不包含下个标题
匹配结果如下:
- 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
- nl 命令
- nl 输出文件并计算行号
- nl -b a 空行也加入行号
- nl -n rz 加入前导0(默认为6位,调整位数可以加入参数
-w 3
调整为3位)