话不多说直接上代码:

cd /home/javaProduct/
if [ -d '/home/javaProduct/lib_new/' ]; then
echo 'Has New Lib!'
echo '--------------Begin Stop JavaService----------------'
edocid=$(jps |grep JavaService | awk '{print $1}')
echo $edocid
kill -9 $edocid
echo '--------------Begin Move Lib------------------------'
mv /home/javaProduct/lib/ /home/javaProduct/lib_prev
echo '--------------End Move Lib--------------------------'
echo '--------------Begin Move Lib_New--------------------'
mv /home/javaProduct/lib_new/ /home/javaProduct/lib/
echo '--------------End Move Lib_New----------------------'
echo '--------------Begin Start Service-------------------'
nohup ./appServer.sh start
echo '--------------End Start Service---------------------'
echo '--------------Begin Move Lib_Prev-------------------'
time2=$(date "+%Y%m%d%H%M%S")
hislib1='/home/javaProduct/lib_'
hislib2=$hislib1$time2
mv /home/javaProduct/lib_prev/ $hislib2
echo '--------------End Move Lib_Prev---------------------'
echo '--------------End Stop JavaService------------------'
else
echo 'No Lib_New'
fi

另外这里还要提到dos2unix来将windows编写shell脚本转换为Linux的,要不上传上去不能用。

由于在DOS(windows系统)下,文本文件的换行符为CRLF,而在Linux下换行符为LF,使用git进行代码管理时,git会自动进行CRLF和LF之间的转换,这个我们不用操心。而有时候,我们需要将windows下的文件上传到linux上,例如shell脚本,执行的时候有时会出现奇怪的问题,这时候,就需要安装dos2unix软件,centos下:

yum install -y dos2unix

安装完成后,对文件进行转换

dos2unix abc.sh

现在执行就不会出问题了

补充,自动重启Tomcat的脚本

cd /home/edocProduct/tomcat/bin
if [ -f "/home/edocProduct/tomcat/webapps/ROOT.war.new" ]; then
echo "Has New War!"
echo "------------Begin Stop Tomcat---------------"
for i in $(ps -ef|grep tomcat | awk '{print $3"+"$2}');
do
if [ ${i%+*} = "" ]; then
echo $i
echo ${i#*+}
kill - ${i#*+}
echo "---------------------Begin Move ROOT.war-----------------------"
mv /home/edocProduct/tomcat/webapps/ROOT.war /home/edocProduct/tomcat/webapps/ROOT.war.prev
echo "---------------------End Move ROOT.war-------------------------"
echo "---------------------Begin Move ROOT.war.new-------------------"
mv /home/edocProduct/tomcat/webapps/ROOT.war.new /home/edocProduct/tomcat/webapps/ROOT.war
echo "---------------------End Move ROOT.war.new---------------------"
echo "---------------------Begin Start Tomcat------------------------"
nohup ./startup.sh
echo "---------------------End Start Tomcat--------------------------"
echo "---------------------Begin Move ROOT.prev----------------------"
time2=$(date "+%Y%m%d%H%M%S")
hislib1='/home/edocProduct/tomcat/webapps/ROOT.war'
hislib2=$hislib1$time2
mv /home/edocProduct/tomcat/webapps/ROOT.war.prev $hislib2
echo "---------------------End Move ROOT.war.prev--------------------"
echo "---------------------End Stop Tomcat---------------------------"
fi
done;
else
echo 'No ROOT.war.new'
fi

Shell脚本自动重启Java服务的更多相关文章

  1. Java web 应用自启动 shell脚本自动重启

    之前公司的内部管理系统jenkins自动构建代码有时候会失效,导致服务停掉. 于是乎就搞了一个自动启动脚本. oa.jar就是监测的服务 startup.sh 的内容是运行jar包的命令 java - ...

  2. 使用shell脚本定时重启tomcat服务

    #!/bin/bash DATE=`date +%Y-%m-%d-%H-%M-%S` echo "当前时间是:$DATE" # 根据端口号查找进程 PID=`/usr/sbin/l ...

  3. CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存

    CentOS/Linux内存占用大,用Shell脚本自动定时清除/释放内存来自:互联网 时间:2020-03-22 阅读:114以下情况可能造成Linux内存占用过高服务配置存在直接分配错误,或隐性分 ...

  4. 使用 shell 脚本自动获取发版指标数据

    问题背景 大一点的公司都会建立一套规章流程来避免低级错误,例如合入代码前必需经过同行评审:上线前必需提测且通过 QA 验证:全量前必需经过 1%.5%.10%.20%.50% 的灰度过程.尤其是最后一 ...

  5. shell脚本自动清理服务器日志、图片等信息

    在做性能测试的时候,linux服务器时常会产生大量数据,如日志信息,图片信息,文件信息等,压测一段时间后,导致服务器磁盘空间暂满而崩溃,每天手动清理比较麻烦, 利用shell脚本自动清理,脚本如下 1 ...

  6. shell 脚本自动插入文件头

    vim编辑shell脚本自动插入文件头部信息,将下面的代码写入home目录xia .vimrc 文件即可. shell 文件头: 1 autocmd BufNewFile *.sh exec &quo ...

  7. linux可运行的shell脚本与设置开机服务启动(自己总结)

    完整的ln命令参考:http://www.runoob.com/linux/linux-comm-ln.html ln :创建连接文件 - 默认创建的是硬连接,好比复制 ,但是两个文件会同步 命令:l ...

  8. Git学习-->如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器?

    一.背景 在我之前的博客 git学习--> Gitlab如何进行备份恢复与迁移? (地址:http://blog.csdn.net/ouyang_peng/article/details/770 ...

  9. shell脚本自动拉起启动程序

    一.我们先看看编写的shell脚本的内容,该shell的作用主要是实现监控某个程序崩溃之后就自动重启该进程. while true do procnum=` ps -ef|grep "tes ...

随机推荐

  1. c# 日期和时间System.DateTime

  2. altium designer(AD13)隐藏敷铜的方法

    覆铜,就是将PCB上闲置的空间作为基准面,然后用固体铜填充,这些铜区又称为灌铜.敷铜的意义在于,减小地线阻抗,提高抗干扰能力;降低压降,提高电源效率;还有,与地线相连,减小环路面积. 如果拿到别人的P ...

  3. node-images 进行图片压缩

    前置条件:先安装images npm install images 编写代码 思路: 从指定文件夹遍历图片,执行压缩,压缩完成后放到指定文件夹中,并保持图片名无变化. var images = req ...

  4. 剑指Offer(三十四):第一个只出现一次的字符

    剑指Offer(三十四):第一个只出现一次的字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net ...

  5. P2261 [CQOI2007]余数求和[整除分块]

    题目大意 给出正整数 n 和 k 计算 \(G(n, k)=k\ \bmod\ 1 + k\ \bmod\ 2 + k\ \bmod\ 3 + \cdots + k\ \bmod\ n\) 的值 其中 ...

  6. ArcGIS API for JS 4.x 离线部署(https)

    在离线部署查资料的过程中,基本全部都是部署在“Default Web Site”下面,部署在这个下面的默认是 http 方式请求的.并且不能修改. 但是系统中请求的都是 https,这样导致请求不到J ...

  7. python制作的翻译器基于爬取百度翻译【笔记思路】

    #!/usr/bin/python # -*- coding: cp936 -*- ################################################### #基于百度翻 ...

  8. 获取类范形的Class

    public class Test<T>{ } Type genType = getClass().getGenericSuperclass(); Type[] params = ((Pa ...

  9. 非自增编号字段,避免生成重复编号(以pdfNo编号为例)RedisLock/ReadLock

    非自增编号字段,避免生成重复编号(以pdfNo编号为例) 有个场景,用户查询延误航班信息,然后生产一个编号,默认第一个编号是1000001,其后新增的编号默认自增加1.每次有人来查延误信息,如果延误信 ...

  10. Codeforces Round #604 (Div. 2) C. Beautiful Regional Contest

    链接: https://codeforces.com/contest/1265/problem/C 题意: So the Beautiful Regional Contest (BeRC) has c ...