背景

最近公司需要在生产服务器上测试字库,需要非常频繁修改配置文件中的字体相关属性,然后实时调试,所以需要频繁的修改配置文件并手动发布出去。之前需要修改配置文件时,我们需要:

  1. 把jar包通过FTP传回本地电脑
  2. 把新配置文件,压缩进jar包替换老配置文件
  3. 再把jar包通过ftp传回服务器

今天偶然发现的jar命令,可以实现替换配置文件,就写了个脚本,专门用来替换配置文件。

经过优化,只需要把待替换的文件通过ftp传入远程服务器,就可以实现一键替换了。

脚本

目前实现了,传入新配置文件绝对路径,和源jar包绝对地址,自动更新替换旧的配置文件的功能。

#! /bin/bash

#新文件完整路径
newfile_addr=$1 #带替换jar包完整路径
orijar=$2 #判断操作类型
echo "更新文件操作"
#获取文件名
filename=`echo "$1" | awk -F '[/]' '{print $NF}'`
#根据文件名找文件
jar -tvf $2 | grep "$filename" > /tmp/$filename
count=`wc /tmp/application-verify.properties | awk -F '[ ]' '{print 1F}'`
if [ $count -eq 1 ];then
echo "找到一个路径开始处理!"
#获取文件夹路径
dir=$(dirname $(head -n 1 /tmp/$filename | awk -F '[ ]' '{print $NF}'))
echo "待查找文件路径!$dir"
#进入jar包所在文件夹,构建文件目录
orijaraddr=`echo $(dirname $2)`
echo "原jar包路径!$orijaraddr"
cd $orijaraddr if [ -d $dir ]; then
echo "$dir已经存在,先删除!"
rm -rf $dir
fi mkdir -p $dir cp $newfile_addr $orijaraddr/$dir
jar -uvf $2 $dir/$filename
echo "更新成功!"
else
echo "路径个数异常,无法处理,$count"
return
fi

测试命令和结果如下:

ging@ging-PC:~/脚本$ ./autoReplaceForjar.sh 传入新配置文件绝对路径 传入jar包绝对路径
更新文件操作
找到一个路径开始处理!
待查找文件路径!BOOT-INF/classes
原jar包路径!/home/ging/SGSfortest/app/realserver
BOOT-INF/classes已经存在,先删除!
正在添加: BOOT-INF/classes/application-dev.properties(输入 = 5791) (输出 = 1837)(压缩了 68%)
更新成功!

Linux脚本-使用jar自动替换配置文件的更多相关文章

  1. linux脚本执行jar包运行

    以下为linux下运行jar包的脚本(只需替换jar包名称): #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=ruoyi-admin.jar cd `di ...

  2. Linux下用jar命令替换war包中的文件【转】

    问题背景:在Linux环境上的weblogic发布war包,有时候只是修改了几个文件,也要上传整个war包,这样很费时间,因此整理了一下Linux环境,更新单个文件的方法. 1.如果要替换的文件直接在 ...

  3. linux脚本:ftp自动传输文件

    使用Shell脚本实现ftp的自动上传下载 http://liwenge.iteye.com/blog/566515 open 192.168.1.171 user guest 123456cd /h ...

  4. 【linux】查看jar里面的配置文件

    1.vim 文件.jar 2.光标到配置文件,然后回车 3.退出命令:q 也可以进行编辑,按i进入编辑,按:wq保存退出

  5. linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

  6. centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课

    centos shell编程4[分发系统] 服务器标准化  mkpasswd 生成密码的工具  expect讲解   expect传递参数   expect自动同步文件  expect指定host和要 ...

  7. [转载] 在Linux中,开机自动运行普通用户的脚本程序

    FROM:http://blog.csdn.net/sinboy/article/details/2466225 FROM:http://www.2cto.com/os/201006/50680.ht ...

  8. linux系统中mysql自动备份脚本

    mysql数据库中存储着网站最核心最宝贵的数据,如果因为不可预测的原因导致数据损坏或丢失,对一个网站的打击是毁灭性的,一次又一次的教训提醒着我们一定要做好备份,但是手工备份确实比较麻烦,每天都要手工操 ...

  9. Linux下shell通用脚本启动jar(微服务)

    Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash #source /etc/profile # Auth:Liucx # Please chan ...

  10. jenkins实现git自动拉取代码时替换配置文件

    jenkins实现从git上自动拉取源代码——>自动编译——>发布到测试服务器——>验证测试,这个大家应该都知道,但是关于源代码里的配置文件,可能就会有点头疼了, 一般测试都会自己的 ...

随机推荐

  1. 基于AI底座的数智油气田参考架构

      基于AI底座的数智油气田参考架构 Architecture for Intelligent & Digital Oilfileds Based-on AI 王权 2024.12.29   ...

  2. 基于Qt的OFD阅读器开发原理与实践

    摘要 本文详细探讨了基于Qt开发OFD阅读器的原理与实践.通过解析OFD文件格式.构建文档结构.实现页面渲染.处理用户交互以及进行性能优化,本文展示了如何使用Qt框架开发一个功能强大.性能优异的OFD ...

  3. RSA的原理和简单实践

    RSA加密是一种非对称加密,原理是: 使⽤算法可以⽣成两把钥匙 A 和 B 使⽤ A 加密的信息,使⽤ B 可以解开 使⽤ B 加密的信息,使⽤ A 可以解开 ⽇常使⽤中,我们把⼀把作为公钥公开发布. ...

  4. 学弟一看就会的RDKX5模型转换及部署,你确定不学?

    作者:SkyXZ CSDN:SkyXZ--CSDN博客 博客园:SkyXZ - 博客园 宿主机环境:WSL2-Ubuntu22.04+Cuda12.6.D-Robotics-OE 1.2.8.Ubun ...

  5. ef 值转换与值比较器

    前言 简单介绍一下,值转换器和值比较器. 正文 为什么有值转换器这东西呢? 那就是这个东西一直必须存在. 比如说,我们的c# enum 对应数据库的什么呢? 是int还是string呢? 一般情况下, ...

  6. delphi中unit单元文件说明

    单元(unit)是组成Pascal程序的单独的源代码模块,单元有函数和过程组成,这些函数和过程能被主程序调用.一个单元至少要有unit语句,interface,和implementation三部分,也 ...

  7. 爬虫基础知识及scrapy框架使用和基本原理

    爬虫 一.异步IO 线程:线程是计算机中工作的最小单元 ​ IO请求(IO密集型)时多线程更好,计算密集型进程并发最好,IO请求不涉及CPU 自定义线程池 进程:进程默认有主线程,可以有多线程共存,并 ...

  8. 如何在M芯片的Mac上爽玩原神

    [热点速递]苹果震撼发布全新M4 Mac mini,国补福利下惊喜价仅约3500元!这不仅是一次办公体验的全新升级,更是对高效能与性价比完美融合的一次致敬.想象一下,以如此亲民的价格,拥抱苹果标志性的 ...

  9. 四柱汉诺塔的 Frame-Stewart 算法及其最优性

    注:本文基本上是对参考文献 \(1\) 的翻译.这份论文是法语的,并且我没找到英语版本或中文介绍( 大家应该很熟悉汉诺塔了把,,,这里就不解释三柱汉诺塔了. Frame-Stewart 算法 对于有 ...

  10. linux下创建idea的桌面快捷方式

    !!!使用linux系统安装idea才会用到: 在桌面上,新建文件,命名为:idea.desktop , (或者在别的地方创建后再放到桌面) 使用 vim 编辑该文件(或者不新建,直接vi idea. ...