我的第一个shell脚本

4 篇文章 0 订阅

用于更新所有账号的各种统计信息,由于数据量过大,一次更新全部账号对服务器的压力过大,容易执行超时,甚至造成阻塞。

所以采取按照用户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脚本,公司没有大神,完全靠自己看文档摸索,写的不好,欢迎大神批评指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值