我的第一个shell脚本
2017-01-03 20:08
363 查看
用于更新所有账号的各种统计信息,由于数据量过大,一次更新全部账号对服务器的压力过大,容易执行超时,甚至造成阻塞。
所以采取按照用户ID分批次更新的方法,一次更新100个用户,不仅减轻了服务器的压力,总的执行时间反而比一次性全部更新要快。
这是第一次写shell脚本,公司没有大神,完全靠自己看文档摸索,写的不好,欢迎大神批评指正。
所以采取按照用户ID分批次更新的方法,一次更新100个用户,不仅减轻了服务器的压力,总的执行时间反而比一次性全部更新要快。
#!/usr/bin/env bash logPwd='/home/wangsai/log/update_stat_count.log' # 获取起始Id和结束Id,返回的是字符串, eg : `"23~2345"`(包含双引号) res=`curl https://xxx.com/stat/api/get-user-ids` echo $res >> $logPwd # 获取字符串总长度 reslen=${#res} # 获取分隔符位置,用于定位起始Id和结束Id separateIndex=`expr index $res "~"` # 最小ID的长度 minIdlen=`expr $separateIndex - 2` # 最小ID idMin=`expr substr $res 2 $minIdlen` echo $idMin >> $logPwd # 最大ID的长度 maxIdlen=`expr $reslen - $separateIndex - 1` # 最大ID的起始位置 maxIdIndexBegin=`expr $separateIndex + 1` # 最大ID idMax=`expr substr $res $maxIdIndexBegin $maxIdlen` echo $idMax >> $logPwd # 循环,每次更新一百个用户数据 while (( $idMin<$idMax )) do # 请求参数 paramBeginId=$idMin paramEndId=`expr $idMin + 100` # 拼接Uri uri="https://xxx.com/stat/api/update-stat-count?begin_id=${paramBeginId}&end_id=${paramEndId}" echo $uri >> $logPwd # 发送请求更新数据 curlRes=`curl $uri` echo $curlRes >> $logPwd $idMin=$paramEndId done # 添加时间,换行 echo -e >> $logPwd date >> $logPwd echo -e >> $logPwd
这是第一次写shell脚本,公司没有大神,完全靠自己看文档摸索,写的不好,欢迎大神批评指正。
相关文章推荐
- 我的第一个Shell脚本
- 我的第一个shell脚本
- 编写你的第一个shell脚本
- 我的第一个shell脚本
- 写好第一个Shell脚本#!/bin/bash作用
- 第一个Shell脚本
- 【转】shell 教程——05 第一个Shell脚本
- 人生第一个shell脚本
- 第一个shell脚本-监测恶意登录远程服务器
- 第一个shell脚本
- 我写的第一个shell脚本(2009-06-08)
- 执行第一个shell脚本
- 我的第一个shell脚本
- Linux Shell系列教程之(二)第一个Shell脚本
- centos分配IP脚本--写的第一个shell脚本
- 第一个shell 脚本------ hello world
- 第一个shell脚本
- shell脚本语言学习1——第一个shell脚本
- Linux学习之第一个shell脚本
- (shell笔记五)第一个shell脚本 helloworld与read命令使用