使用shell进行简单分析增量更新时间的方法


思路

产品里面更新增量时耗时较久,
想着能够简单分析下哪些补丁更新时间久
哪些相同前缀的补丁更新的时间累积较久.
本来想通过全shell的方式进行处理
但是有一部不太会用 就用上了excel的数据列处理
为了防止自己忘记, 这里简单总结一下.

获取所有的补丁更新记录

第一步获取更新日志- 注意本方法建议仅进行一次完整更新的时间分析.
我们的日志一般是会进行拆分和打包.
分析的方法为
第一步解压缩
第二步按照时间进行文件排序
cat test1 > all.txt
cat test2 >> all.txt
就可以归集到一个文件中来
然后可以查看文件内容,如果前面大部分都是应用升级, 没必要分析时间
可以使用 vim 打开all.txt 然后的命令模式下输入 /databaseschemas 的方式
过滤到具体哪一行开始更新数据库.
然后输入 :set nu 查看具体的函数
tail -n +行数 all.txt >all2.txt
清理不需要分析的部分日志.
保留必须要分析的日志文件.

原始文件第一次分析

  • 获取单独增量的个体的更新时间
log=/log/oscartime2
ip=10.110.139.181
code=xxxx
# 初始化记录文件
echo "">/deploy/Patchinstalltime.txt
# 获取每个补丁的更新时间 单位为秒数, 精确到秒, 不包括毫秒数
grep -E "开始安装补丁|补丁安装完成" $log |grep -Ev "$ip|$code|请自行启动服务" | awk '{print $6 " " $2}' |cut -c 8- |awk '{print $2}' |cut -c -8 |awk -F ":" '{print $1*3600+$2*60+$3}' >/deploy/timesource.txt
cat /deploy/timesource.txt | awk 'NR%2{p=$1;next}{print ($1-p)}' >/deploy/time.txt
# 按照更新顺序获取更新过的补丁列表
grep "开始安装补丁" $log |awk '{print $6}' |cut -c 8- >/deploy/code.txt
# 备份文件
checkstat=`grep -E "开始安装补丁|补丁安装完成" $log |grep -Ev "$ip|$code" | head -n 1 |grep 补丁安装完成 |wc -l`
if [ $checkstat -eq 1 ]; then
echo "文件的开始不是补丁开始安装而是已经安装完成,所以需要删除第一行数据"
sed "1d" -i /deploy/timesource.txt
fi
cat /deploy/timesource.txt | awk 'NR%2{p=$1;next}{print ($1-p)}' >/deploy/time.txt
scp /deploy/time.txt /deploy/time_back.txt
scp /deploy/code.txt /deploy/code_back.txt
# 获取补丁数量,这数字为补丁数量乘以2 应用一次 数据库一次
j=`cat /deploy/time.txt |wc -l`
echo "本次待分析的补丁共计: "$j "个"
i=1
# 获取每个补丁的更新时间.
while [ $i -le $j ]
do
#echo $i
t1=$(sed -n "1p" /deploy/code_back.txt)
t2=$(sed -n "1p" /deploy/time_back.txt)
t="$t1的更新时间为: $t2"
echo $t >>/deploy/Patchinstalltime.txt
sed "1d" -i /deploy/time_back.txt
sed "1d" -i /deploy/code_back.txt
i=$[$i+1]
done
cat /deploy/Patchinstalltime.txt |sort -k2hr >/deploy/PatchinstalltimeOrder.txt
echo "分析补丁更新时间的原始文件为:" "/deploy/Patchinstalltime.txt"
echo "分析补丁更新时间的原始文件为经过排序为:" "/deploy/PatchinstalltimeOrder.txt"

使用excel进行分析

可以将第一步处理好的文件使用excel打开

注意分隔符需要使用 :
然后建议多复制几行 时间, 然后拆分补丁名称
选中补丁名称列, 然后打开数据 工具栏
进行分栏 处理
可以使用 2 进行分栏 指代 2022年中第一个2字
然后前面的就是补丁模块信息
再将HB 置换成 null 就是补丁模块名称了. 然后再将结果转储到一个文件就可以进行下一步的处理.

使用awk第三次分析

 awk '{sum[$1]+=$2}END{for(c in sum){print c,sum[c]}}' raw2 >raw3.txt
cat raw3.txt |sort -k1h >finaltime.txt

直接使用shell脚本进行模块更新时间统计

j=`cat /deploy/PatchinstalltimeOrder.txt |wc -l`
echo "本次待分析的补丁共计: "$j "个"
i=1
scp /deploy/PatchinstalltimeOrder.txt /deploy/Patchmoduletest.txt
echo " " > /deploy/patchmoduletime.txt
sed -i "s/HB202/#/" /deploy/Patchmoduletest.txt
sed -i "s/202/#/" /deploy/Patchmoduletest.txt
while [ $i -le $j ]
do
#echo $i
patchmodule=$(cat Patchmoduletest.txt |awk 'BEGIN{FS="#"}NR==1{print $1}')
patchtime=$(cat Patchmoduletest.txt |awk 'BEGIN{FS=":"}NR==1{print $2}')
echo $patchmodule $patchtime >> /deploy/patchmoduletime.txt
sed "1d" -i /deploy/Patchmoduletest.txt
i=$[$i+1]
done awk '{sum[$1]+=$2}END{for(c in sum){print c,sum[c]}}' /deploy/patchmoduletime.txt |sort -k2hr >/deploy/patchmodulefinal.txt
echo "按照模块统计分析的时间为: /deploy/patchmodulefinal.txt"

使用shell进行简单分析增量更新时间的方法的更多相关文章

  1. dede编辑文章不更新时间的方法

    在修改文章的时候,发现织梦DEDECMS5.7这个版本存在一个问题,修改文章的同时也修改了文章的发布时间,这个 功能可能有些人比较需要,但同时也有些站长朋友又不需要,因为我们编辑某个文章的时候,发现编 ...

  2. DedeCMS文章编辑不更新时间1970年1月1日

    在修改文章或者后期优化的时候,织梦dedecms5.7版本存在一个问题,修改文章的同时也修改了文章的发布时间,这个功能可能有些人比较需要,但同时也有些站长朋友又不需要,因为我们编辑某个文章的时候,发现 ...

  3. 自动增量更新war包的shell脚本

    我们项目是打包成war部署在jboss中的,但在上线或者运行时,经常要修改某些类然后再增量更新到war(因为生产环境只有发布的同时有,不能每个人都打包),所以都是手动做的,耗时耗力. 我花了点时间写了 ...

  4. 一个简单的数据增量更新策略(Android / MongoDB / Django)

    我在做个人APP - CayKANJI - 的时候遇到一个问题: 如何增量式地把日语汉字数据地从server更新到APP端,即每次用户运行更新操作时,仅仅获取版本号高于本地缓存的内容. 数据格式 为了 ...

  5. 测试Kettle在增量更新的时候是否支持级联——不支持(基于mysql)

    由于LZ很像整理一下如何使用Kettle对一张表进行增量更新的时候, 同时实现对数据库中的其他表也可以实现相关的更新操作. 第一种方法想使用触发器,即在相应的hop之间添加SQL脚本step然后在st ...

  6. android游戏的增量更新(资源及代码的热更新)

    需求当游戏需要更新时,不必让用户下载新的完整包,只需要通过游戏内部的更新系统自动更新差异包,达到节约用户流量和时间的目的. 大体思路:1.(游戏逻辑用lua等脚本编写的情况)这种方式的增量更新非常简单 ...

  7. Unity5 怎样做资源管理和增量更新

    工具 Unity 中的资源来源有三个途径:一个是Unity自己主动打包资源.一个是Resources.一个是AssetBundle. Unity自己主动打包资源是指在Unity场景中直接使用到的资源会 ...

  8. 使用Redis SortedSet实现增量更新

    导读:前段时间有个需求是提供一个接口供客户端增量更新数据,当有数据被删除了以后客户端也需要感知到,并且要支持一定并发: 关键词:高并发,增量更新 前言 何谓增量更新,顾名思义就是只更新变化的部分,这样 ...

  9. 谈谈混合 App Web 资源的打包与增量更新

    综述 移动 App 的运行环境具有带宽不稳定,流量收费,启动速度比较重要等特点,所以混合 App 如何加载 Web 资源并不是一个新问题.本文目的是总结出一种资源打包下载的思路和方案,并且提供一种打包 ...

  10. 自动化部署与统一安装升级 - 类ansible工具 udeploy0.3版本发布 (更新时间2014-12-24)

    下载地址:  unifyDeploy0.1版本  unifyDeploy0.2版本     unifyDeploy0.3版本 (更新时间2014-07-25)   自动化部署与统一安装升级,适用于多资 ...

随机推荐

  1. 测试攻城狮必备技能点!一文带你解读DevOps下的测试技术

    [摘要]本文将从DevOps模式下对测试人员的活动的变化,以及常用的测试技术层面进行解读. 项目的软件开发模式主要经历瀑布模型.敏捷开发和DevOps这几个阶段,其中DevOps主要解决开发和运维.运 ...

  2. LiteOS内核源码分析:动态内存之Bestfit分配算法

    摘要:本文为大家剖析LiteOS动态内存模块bestfit算法的源代码,包含动态内存的结构体.动态内存池初始化.动态内存申请.释放等. 内存管理模块管理系统的内存资源,它是操作系统的核心模块之一,主要 ...

  3. 基于DMS的数仓智能运维服务,知多少?

    摘要:GaussDB(DWS)使用DMS来承载数据库的智能运维体系,提供了数据库运维过程中的监控,分析,处理三大核心处理过程. 本文分享自华为云社区<GaussDB(DWS) 数据库智能监控运维 ...

  4. Java中观察者模式与委托,还在傻傻分不清

    摘要:本文通过对比Java中观察者模式与委托,希望能够让开发者分清二者的区别和联系. 本文分享自华为云社区<Java中观察者模式与委托的对比>,作者: 小小张自由--张有博 . 代码背景 ...

  5. 华为云GaussDB(for MySQL)2.0全新升级,三大技术大揭秘

    摘要:9月23日,在华为全联接2021主会场,华为高级副总裁.华为云CEO.消费者云服务总裁张平安发表"深耕数字化,一切皆服务"主题演讲,并发布了GaussDB(for MySQL ...

  6. 小熊派:用OpenHarmory3.0点亮LED

    摘要:作为一个代表性的完整的开发,本案例可以分成3大部分:代码文件的规划,LED灯的驱动开发,点亮LED的业务开发. 本文分享自华为云社区<在小熊派Micro上用OpenHarmory3.0点亮 ...

  7. 如何给网页和代码做HTML加密?

    ​ 如何给网页和代码做HTML加密? 本篇文章给大家谈谈html混淆加密在线,以及HTML在线加密对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔. ​ 如何给代码加密? 1.源代码加密软件推荐使 ...

  8. 由浅入深,揭秘企业级OLAP数据引擎ByteHouse

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在字节跳动各产品线飞速成长的过程中,对数据分析能力也提出了更高的要求,现有的主流数据分析产品都没办法完全满足业务要 ...

  9. Java 项目工程搭建 --创建子模块(Spring Initializr)

    一下篇,常用 Java 项目工程搭建 --创建子模块(依赖父工程)   也不算常用,常用的是 ctrl+c.ctrl+v  ,哈哈 Package要手动改下,生成的很丑 选能支持 Alibaba Cl ...

  10. 第一章 Linux系统编程

    Linux基础命令 ctrl + l //快速清屏 rm 文件名 //删除文件,rm *.o表示删除所有.o后缀的文件 mkdir 目录名 //创建一个目录 touch 文件名 //创建一个文件 tr ...