定义函数
- 定义函数格式:
函数名(){ linux命令;}
- 注意:
{ linux命令;}
中花括号内部与命令行有空格,命令末尾有分号
- 调用函数直接输入函数名即可
- 要打印函数类型可以使用:
type函数名
1、查找Nginx日志中访问量top3的ip
find_top_3ip(){ awk '{print $1} ' nginx.log | sort | uniq -c | sort -nr | head -3; }
-
find_top_3ip
为函数名;
-
awk '{print $1}'
: 输出ip列
-
sort
: 先对ip列进行排序,
-
uniq -c
: 对排序后的ip去重,-c加上该ip的个数
-
sort -nr
: 对去重后的ip根据ip个数倒序排列,-n对数值排序(从大到小),-r倒序排列
-
head -3
: 输出前三行
2、查找Nginx日志中状态码为404或5oo的行
find_error_log(){ awk '$9~/404 | 500/ {print $0} ' nginx.log; }
-
find_error_log
:函数名
-
$9~
:对第九列使用正则表达式
-
/404|500/
:匹配404或者500
3、找出500错误时候的上下文,找出500错误记录的前一行与后一行
find_before_and_after(){ grep -E -C1 '\b500\b' nginx.log; }
-
find_before_and_after
:函数名
-
-E
: 使用正则表达式
-
-C1
: 打印匹配行以及前后一行
-
-A1
: 打印匹配行以及后一行
-
-B1
: 打印匹配行以及前一行
4、找出/topics的平均响应时间,响应时间在倒数第二个字段
url_avg_time(){ awk '$7=="/topics"{print $(NF-1)}' nginx.log | awk '{sum+=$1}END{print sum/NR}'; }
url聚类
函数:
url_summary (){
awk '{print $7}' nginx.log | sed -E 's/[A-Za-z0-9\-]+\.png/id\.png/g;s/[A-Za-Z0-9\-]+\.jpg/id\.jpg/g;s/[A-Za-z0-9\-]+\.gif/id\.gif/g;s//[0-9]+/\/int/g;s/page\=[0-9]+/page=int/g;s/code\=[A-Za-z0-9]+/code\=id/g;s/state\=[A-Za-zO-9]+/state\=id/g;s/client_id=[A-Za-z0-9]+/client_idl=id/g' | sort / uniq -c | sort -rn | head -10
}
统计阿里云盾进程的性能,每1s统计一次,统计他的cpu、mem的利用率,用tab隔开,并在最后空出一行打印下两个指标的平均值