博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
运行Jar包程序Shell
阅读量:5283 次
发布时间:2019-06-14

本文共 2205 字,大约阅读时间需要 7 分钟。

 

启动:

#!/bin/bashset -eJAVA_HOME=/usr/local/java # 检查是否有项目名appName=$1if [ "$appName" == "" ];then echo "appName is needed!" 2>&2 exit 1fi # 输出脚本所在的真正目录,存储到变量中bin_abs_path=$(readlink -f $(dirname $0))base=${bin_abs_path}/..echo "start application $appName ..." 2>&2 # 检查pid文件是否存在if [ -f $bin_abs_path/$appName.pid ] ; then    echo "found $appName.pid , Please run stop-ndb.sh first ,then startup-ndb.sh" 2>&2    exit 1fi # 启动项目JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:-UseGCOverheadLimit -XX:MaxPermSize=128m -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -Duser.language=zh -Duser.region=CN -Duser.timezone=Asia/Shanghai"APP_OPTS="-DappName=$appName -Dspring.profiles.active=envProd"nohup $JAVA_HOME/bin/java $JAVA_OPTS $APP_OPTS -jar $base/app/$appName.jar 1>/dev/null 2>/dev/null &sleep 20 # 记录Shell最后运行的后台Process的PIDecho $! > $bin_abs_path/$appName.pidecho "start application $appName success!" 2>&2

 

停止:

#!/bin/bashset -e # 检查是否有项目名appName=$1if [ "$appName" == "" ];then echo "appName is needed!" 2>&2 exit 1fi # 输出脚本所在的真正目录,存储到变量中bin_abs_path=$(readlink -f $(dirname $0))base=${bin_abs_path}/.. # 检查jar包是否存在if [ ! -e "$base/app/$appName.jar" ];then echo "$base/$appName.jar is not found!" 2>&2 exit 1fi # 得到对应的进程id的函数getapp_pid() {   JAVA_PID=`ps -C java -f --width 1000|grep "$appName"|grep -v grep|awk '{print $2}'`   echo $JAVA_PID;}echo "stop application $appName ..." 2>&2# 确定pid pidfile=$base/bin/$appName.pidpid="";if [ -f $pidfile ];then    pid=`cat $pidfile`fi #若有没有相应的pid文件,将通过查询程序名称的进程获得;if [ "$pid" == "" ];then    pid=`getapp_pid "appName=$appName"`fiif [ "$pid" != "" ];then    echo -e "`hostname`: stopping $appName $pid ... " 2>&2    gpid=`ps -C java -f --width 1000|grep "$pid"|grep -v grep|awk '{print $2}'`    if [ "$gpid" == "$pid" ] ; then       kill $pid    fifiLOOPS=0while (true);doecho "stoping..."   gpid=`ps -C java -f --width 1000|grep "$appName"|grep -v grep|awk '{print $2}'`   if [ "$gpid" == "" ];then      echo "Oook! cost:$LOOPS" 2>&2      if [ -f $pidfile ];then         `rm $pidfile`      fi      break;   fi   let LOOPS=LOOPS+1   sleep 1done

 

转载于:https://www.cnblogs.com/zhaojinxin/p/7652547.html

你可能感兴趣的文章
关于web服务器和数据库的各种说法(搜集到的)
查看>>
C# Stream 和 byte[] 之间的转换
查看>>
OMG: daily scrum nine
查看>>
redis与spring结合错误情况
查看>>
第六章 字节码执行方式--解释执行和JIT
查看>>
字符串方法title()、istitle()
查看>>
yield语句
查看>>
查看linux系统中占用cpu最高的语句
查看>>
[洛谷P1738]洛谷的文件夹
查看>>
ubuntu server设置时区和更新时间
查看>>
【京东咚咚架构演进】-- 好文收藏
查看>>
【HTML】网页中如何让DIV在网页滚动到特定位置时出现
查看>>
文件序列化
查看>>
jQuery之end()和pushStack()
查看>>
Bootstrap--响应式导航条布局
查看>>
Learning Python 009 dict(字典)和 set
查看>>
JavaScript中随着鼠标拖拽而移动的块
查看>>
HDU 1021 一道水题
查看>>
The operation couldn’t be completed. (LaunchServicesError error 0.)
查看>>
php每天一题:strlen()与mb_strlen()的作用分别是什么
查看>>