手写linux上的重启脚本,先把提纲列下

1.检查进程是否存在

存在杀死

2.备份原来的包到指定目录

3. 拉取新包,我这边为了简便,没有从jenkins slave上拿

4.启动命令

5.检查是否进程起来了

#!/bin/bash

###path
JAVA=/usr/java/jdk1.8.0_211-amd64/bin/java
APP_HOME=/opt/88bugs
APPNAME=TestPlatform.jar
APP_PARAM="--spring.config.location=${APP_HOME}/application.properties" ####check wheather the port is running, if yes kill it
PID=`ps -ef | grep ${APP_HOME}/${APPNAME} | grep -v grep | awk '{print $2}'`
echo ${PID} if test -z ${PID}
then
echo "进程没有启动!" else
echo "will shutdown this process"
kill -9 ${PID}
sleep 2
fi ####backuop
mv ${APP_HOME}/${APPNAME} ${APP_HOME}/backup/${APPNAME}-date +%Y%m%d%H%M%S ####deploy the war package
cp -r /opt/${APPNAME} ${APP_HOME}/${APPNAME} ##### start the process#
nohup ${JAVA} -jar ${APP_HOME}/${APPNAME} ${APP_PARAM} > ${APP_HOME}/catalina.out 2>&1 & afterPID=`ps -ef | grep ${APP_HOME}/${APPNAME} | grep -v grep | awk '{print $2}'`
echo ${afterPID}
sleep 10 if test -z ${afterPID}
then
echo "部署失败"
else
echo "部署成功"
fi

若脚本希望既可以停止服务,又可以重启服务,

那么结构屡一下

配置环境,可供其他项目更改细节使用

获取输入,条件如果输入的是a,则执行a的方法;如果是b则执行b的方法体,什么都不是,即不是指定的指令,输出提示“您输入的指令没有对应的方法哟”

在上面的脚本上,更改些许即可

#!/bin/bash

#server 

JAVA=/usr/java/jdk1.8.0_211-amd64/bin/java
APP_HOME=/opt/88bugs
APP_NAME=TestPlatform.jar
APP_PARAM="--spring.config.location=${APP_HOME}/application.properties" case $1 in
start)
PID=$(ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}')
if [ -z "$PID" ] ;then
echo "start ${APP_NAME}"
nohup ${JAVA} -jar ${APP_HOME}/${APP_NAME} ${APP_PARAM} > ${APP_HOME}/catalina.out 2>&1 &
else
echo "${APP_NAME} is running"
fi
;; stop)
PID=$(ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}')
if [ -z "$PID" ] ;then
echo "${APP_NAME} is not running"
else
echo "stop ${APP_NAME}"
kill -9 $PID
fi
;; restart)
PID=$(ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}')
if [ -z "$PID" ] ;then
echo "start ${APP_NAME}"
nohup ${JAVA} -jar ${APP_HOME}/${APP_NAME} ${APP_PARAM} > ${APP_HOME}/catalina.out 2>&1 &
else
echo "stop ${APP_NAME}"
kill -9 $PID
echo "start ${APP_NAME}"
nohup ${JAVA} -jar ${APP_HOME}/${APP_NAME} ${APP_PARAM} > ${APP_HOME}/catalina.out 2>&1 &
fi
;; backup)
PID=$(ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}')
if [ -z "$PID" ] ;then
echo "${APP_NAME} is not running,will backup files"
mv ${APP_HOME}/${APP_NAME} ${APP_HOME}/backup/${APP_NAME}-$(date +%Y%m%d%H%M%S)
else
echo "stop ${APP_NAME}"
kill -9 $PID
echo "will backup files..."
mv ${APP_HOME}/${APP_NAME} ${APP_HOME}/backup/${APP_NAME}-$(date +%Y%m%d%H%M%S)
fi
;; logs)
tail -f ${APP_HOME}/catalina.out
;; status)
PID=$(ps -ef | grep ${APP_NAME} | grep -v grep | awk '{print $2}')
if [ -z "$PID" ] ;then
echo "${APP_NAME} is not running"
else
echo "${APP_NAME} is running, pid $PID"
fi
;; *)
echo "您输入的指令没有对应的方法哟" esac

  

  

最新文章

  1. Neutron 物理部署方案 - 每天5分钟玩转 OpenStack(68)
  2. 在线OJ实用技巧(转载)
  3. iOS 评论APP撰写评论
  4. C#格式化JSON字符串
  5. js屏弊错误
  6. FZU 2225 小茗的魔法阵 扫描线+树状数组
  7. Java连接Azure SQL Database
  8. UINavigationBar
  9. C++将一个数组内容赋给另一个数组
  10. java程序给short变量赋0xff报异常
  11. Linux下的指令:find,which
  12. [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
  13. python答题辅助
  14. js的event事件对象汇总
  15. linux学习笔记1——指令的基本格式及基本文件操作
  16. [漏洞分析]thinkphp 5.x全版本任意代码执行分析全记录
  17. World final 2017 题解
  18. openstack--5--控制节点和计算节点安装配置nova
  19. [leetcode 120]triangle 空间O(n)算法
  20. Linux readelf命令

热门文章

  1. 静态站点生成器-md-pelican
  2. 04点睛Spring4.1-资源调用
  3. alpine docker exec: "/bin/bash": stat /bin/bash: no such file or directory 解决方案
  4. Javascript 闭包何时回收?
  5. Java设计模式:23种设计模式(转)
  6. HCIA SWITCHING&ROUTTING 笔记——第一章 TCP/IP基础知识(1)
  7. AS3动画效果常用公式
  8. Luogu5290 [十二省联考2019] 春节十二响 【贪心】【堆】
  9. logback日志无法按日期分割的问题
  10. Eclipse下使用Maven创建项目出现的archetype错误,记,转