话不多说直接上代码:

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# DirectoryInfo类

  2. 加标签的continue用法

    1.加标签的continue,类似于C语言的goto语句

  3. node绑定域名 nginx篇

    创建nodejs文件,并测试执行有没有问题. var express = require('express'); var app = express(); app.get('/', function ...

  4. littlefs了解一下

    littlefs是一个文件系统,断电数据不会出异常,适合IOT场景.

  5. LG5325 【模板】Min_25筛

    P5325 [模板]Min_25筛 题目背景 模板题,无背景. 题目描述 定义积性函数$f(x)$,且$f(p^k)=p^k(p^k-1)$($p$是一个质数),求 $$\sum_{i=1}^n f( ...

  6. 【测试用例工具】TestLinked的使用实例(转)

    转自:https://blog.csdn.net/ikoqzurydr/article/details/81630510

  7. go语言-for循环

    一.for循环语法: for 循环变量初始化:循环条件:循环变量迭代{ 循环体 }案例: 打印10句hello 方式一 package main import "fmt" func ...

  8. Hdfs读写数据出错

    1.Hdfs读数据出错:若在读数据的过程中,客户端和DataNode的通信出现错误,则会尝试连接下一个 包含次文件块的DataNode.同时记录失败的DataNode,此后不再被连接. 2.Hdfs在 ...

  9. 对日开发中 PG , PL , SE , PM 是什么

    PG(ProGramer)指程序员. 这类人才在企业中所占数量最多,通常占到整个项目员工数的70%,也是企业中最紧缺的一类职位,一般为具有专业知识的软件工程技术人员. PL(project leade ...

  10. Linux 一款免费的shell工具 MobaXterm_Personal

    一款免费的shell工具 MobaXterm_Personal