当前位置: 首页 > news >正文

Linux Java Jar Shell 脚本

博文目录

文章目录


使用方式

  • ./run.sh start
  • ./run.sh stop
  • ./run.sh restart
  • ./run.sh status
#!/bin/bashJAVA_CMD="java"
APP_NAME="bid"
JAR_NAME="bid.jar"
PROFILE="develop"BASE_PATH=`cd $(dirname $0); pwd`
# 应用基础目录下的 env 文件中定义的变量
# source ${BASE_PATH}/envOPTIONS="-XX:MetaspaceSize=256M"
OPTIONS="${OPTIONS} -jar ${BASE_PATH}/${JAR_NAME}"
OPTIONS="${OPTIONS} --spring.profiles.active=${PROFILE}"echoRed() { echo $'\e[0;31m'"$1"$'\e[0m'; }
echoCyan() { echo $'\e[0;36m'"$1"$'\e[0m'; }
echoYellow() { echo $'\e[0;33m'"$1"$'\e[0m'; }[[ -z "$stopWaitTime" ]] && stopWaitTime=10getPid() {pid=`ps ax | grep -i ${JAR_NAME} | grep java | grep -v grep | awk '{print $1}'`
}start() {getPidif [ -z ${pid} ] ; thendoStartelseechoCyan "[${APP_NAME}] 正在运行 ($pid)"exit 1fi
}doStart() {echoCyan "${JAVA_CMD} ${OPTIONS}"# nohup ${JAVA_CMD} ${OPTIONS} > ${BASE_PATH}/start.out/dev/null 2>&1 &nohup ${JAVA_CMD} ${OPTIONS} > /dev/null 2>&1 &# 等待启动startCounter=0 # 记录等待次数while [ -z ${pid} ]dosleep 1startCounter=`expr $startCounter + 1`echoCyan "[${APP_NAME}] 启动中, ${startCounter}..."getPidif [ "$startCounter" -ge $stopWaitTime ];thenpid=""fidone# 输出启动结果if [ -z ${pid} ] ; thenechoRed "[${APP_NAME}] 启动失败"elseechoCyan "[${APP_NAME}] 已启动 ($pid)"fi
}restart() {stop && start
}stop() {getPid#是否在运行if [ -z ${pid} ] ; thenechoYellow "[${APP_NAME}] 未在运行"exit 0;fi#停止服务echoCyan "[${APP_NAME}] 正在运行 (${pid})"kill ${pid} #&#等待kill没有效果,去掉#kpid=$!#wait $kpid#等待停止stopCounter=0getPidwhile [ ${pid} ] ; dosleep 1stopCounter=`expr $stopCounter + 1`echoCyan "[${APP_NAME}] 停止中, ${stopCounter} 秒 ..."getPidif [ "$stopCounter" -ge $stopWaitTime ];thenechoCyan "[${APP_NAME}] 强制停止 ..."kill -9 ${pid}fidone#输出结果getPidif [ -z ${pid} ] ; thenechoCyan "[${APP_NAME}] 已停止"elseechoRed "[${APP_NAME}] 停止失败"fi
}status() {getPidif [ -z ${pid} ] ; thenechoYellow "[${APP_NAME}] 未在运行"exit 0elseechoCyan "[${APP_NAME}] 正在运行 ($pid)"exit 0fi
}case "$1" in'start')start;;'stop')stop;;'restart')stopstart;;'status')status;;*)echo "Usage: $0 { start | stop | restart | status }"exit 1;;
esacexit 0

相关文章:

  • 使用 React 实现自定义数据展示日历组件
  • 《Linux C编程实战》笔记:进程操作之退出,执行,等待
  • SQL进阶理论篇(十二):InnoDB中的MVCC是如何实现的?
  • 基于点云去滤除灰尘的滤波算法调研
  • nlp与cv的发展
  • OpenCV技术应用(7)— 将图像转为热力图
  • 用23种设计模式打造一个cocos creator的游戏框架----(二十)解析器模式
  • 【LeetCode刷题笔记】155.最小栈
  • 减速机振动相关标准 - 笔记
  • 鸿蒙HarmonyOS开发用什么语言
  • Python之PyCharm开发工具的安装与设置
  • for命令语句
  • 持久化存储 StorageClass
  • Python爬虫全解析
  • ACT、NAT、NATPT和EASY-IP
  • 深入了解以太坊
  • 10个确保微服务与容器安全的最佳实践
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • C++类中的特殊成员函数
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Intervention/image 图片处理扩展包的安装和使用
  • javascript数组去重/查找/插入/删除
  • jQuery(一)
  • MySQL用户中的%到底包不包括localhost?
  • nginx 配置多 域名 + 多 https
  • node和express搭建代理服务器(源码)
  • node入门
  • 给github项目添加CI badge
  • 关于使用markdown的方法(引自CSDN教程)
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 将 Measurements 和 Units 应用到物理学
  • 聊聊directory traversal attack
  • 前端工程化(Gulp、Webpack)-webpack
  • 深入浅出Node.js
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 使用权重正则化较少模型过拟合
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • %@ page import=%的用法
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)甲方乙方——赵民谈找工作
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .FileZilla的使用和主动模式被动模式介绍
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET Standard 的管理策略
  • .NET 事件模型教程(二)
  • .net 微服务 服务保护 自动重试 Polly
  • .NET简谈设计模式之(单件模式)
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • /var/spool/postfix/maildrop 下有大量文件