shell脚本实例-nginx日志分析

作者简介:
陈志珂(头条号:强扭的瓜不好吃)目前就职于中国最大的安卓应用软件公司,任高级工程师,现在公司任php开发工程师,python开发工程师,高级运维工程师,公众号“铅笔学园”运维内容合作作者之一。**
铅笔学园:IT资源分享|知识分享,做初级程序员的指明灯**

shell脚本实例-nginx日志分析

统计2018/8/6 PV量

grep "06/Aug/2018" access.log|wc -l

统计当天800900的PV

awk '$4>="[06/Aug/2018:21:59:57" && $4<="[06/Aug/2018:24:00:00" {print $0}' access.log|wc -l

统计201886日 一天内访问最多的10个IP(top10)

grep '06/Aug/2018' access.log | awk '{ips[$1]++} END {for(i in ips){ print i,ips[i]} }'|sort -k2 -rn |head -n10

awk '/06/Aug/2018/{ips[$1]++} END {for(i in ips){print i ,ips[i]}}' access.log |sort -k2rn |head -n10

统计201886日 一天内访问大于100的IP

awk '/06/Aug/2018/{ips[$1]++} END {for(i in ips){ if(ips[i]>10){print i ,ips[i]}}}' access.log

grep '06/Aug/2018' access.log |awk '{ips[$1]++} END {for(i in ips ){if(ips[i]){ print i,ips[i]} }}'

统计201886日 访问最多的10个页面($request)

awk '/06/Aug/2018/{urls[$1]++} END {for(i in urls){print i ,urls[i]}}' access.log |sort -k2rn |head -n10

统计201886日 每个URL访问内容总大小($body_bytes_sent)

awk '/06/Aug/2018/{size[$7]+=$10} END{for(i in size) {print i,size[i]}}' access.log |sort -k2rn |head

统计201886日 每个IP访问状态码数量($status)

awk '/06/Aug/2018/{ip_code[$1" "$9]++} END{for(i in ip_code) {print i,ip_code[i]}}' access.log |sort -k1rn |head

统计201886日 IP访问状态码为404及出现次数($status)

awk '/06/Aug/2018/{ if($9=="404"){ip_code[$1" "$9]}} END {for (i in ip_code){print i,ip_code[i]}}' access.log|sort -k3rn |head

统计2018868:3024:00,访问状态码是404 $9=="404"

awk '$4>="[06/Aug/2018:08:30:00" && $4<="[06/Aug/2018:24:00:00" {if ($9=="404"){ip_code[$1" "$9]++}} END{for(i in ip_code){print i,ip_code[i]}}' access.log

统计201886日 各种状态码数量

awk '/06/Aug/2018/{code[$9]++} END {for (i in code){print i,code[i]}}' access.log

这里写图片描述

### 编写Shell脚本自动化编译和部署Nginx #### 准备工作 为了确保能够顺利地通过Shell脚本完成Nginx的编译与部署,需先确认所有必要的资源已准备就绪。这包括但不限于获取到最新的Nginx源码包以及目标机器上的依赖库安装完毕。 #### 脚本设计思路 考虑到实际应用场景中的灵活性需求,在此提供一种基于条件判断来决定是否继续执行后续操作的设计方案。即只有当传入特定参数`deploy`时才会触发真正的部署流程;反之,则显示帮助信息并终止进程[^1]。 #### Shell脚本实例 下面是一个简单的Shell脚本例子用于展示如何实现上述功能: ```bash #!/bin/bash # 定义函数:打印帮助信息 show_help() { echo "脚本 deploy.sh 的使用方式:" echo "./deploy.sh [ deploy ]" } if [[ "$#" -ne 1 || "$1" != "deploy" ]]; then show_help exit 0 fi # 设置变量 NGINX_VERSION="1.21.6" # Nginx版本号可根据实际情况调整 WORK_DIR="/tmp/nginx_build_$RANDOM" # 创建临时目录存放下载文件 mkdir $WORK_DIR && cd $_ # 下载Nginx源码压缩包至本地 wget http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz # 解压tarball tar zxvf nginx-$NGINX_VERSION.tar.gz # 移动到解压后的文件夹内 cd nginx-$NGINX_VERSION/ # 配置编译选项 (这里简化了配置过程) ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module make -j8 && make install echo "Nginx has been installed successfully." # 清理残留数据 rm -rf $WORK_DIR ``` 这段代码首先定义了一个名为`show_help()`的帮助消息输出函数,并利用位置参数(`$#`)检测用户输入的数量及其具体内容来进行逻辑分支的选择。一旦满足启动条件——即接收到单个且唯一的字符串`deploy`作为唯一参数传递进来之后,便会依次执行一系列预设好的指令集以达成自动化的构建目的[^2]。 对于更复杂的场景来说,还可以进一步扩展此基础框架,比如加入更多的错误处理机制、支持更多种类的服务组件集成或是引入外部配置文件等方式提升其通用性和易维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值