启动:

#!/bin/bash
set -e
JAVA_HOME=/usr/local/java
# 检查是否有项目名
appName=$
if [ "$appName" == "" ];then
echo "appName is needed!" >&
exit
fi

# 输出脚本所在的真正目录,存储到变量中
bin_abs_path=$(readlink -f $(dirname $))
base=${bin_abs_path}/.. echo "start application $appName ..." >&2 # 检查pid文件是否存在
if [ -f $bin_abs_path/$appName.pid ] ; then
echo "found $appName.pid , Please run stop-ndb.sh first ,then startup-ndb.sh" >&
exit
fi # 启动项目
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的PID
echo $! > $bin_abs_path/$appName.pid
echo "start application $appName success!" >&

停止:

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

运行Jar包程序Shell的更多相关文章

  1. windows 下启动运行 jar 包程序

    windows 下 运行 jar 包 java -jar XXX.jar java -server -Xms1024m -Xmx20480m -jar $JAR_NAME.jar windows 后台 ...

  2. 【原】无脑操作:Centos 7后台运行及终止jar包程序

    1.后台运行jar包程序,输入:nohup java -jar /路径/程序.jar & 2.后台终止jar包程序,输入:ps -ef | grep java,查看使用java命令的进程,再输 ...

  3. 一个简单的Linux启动jar包的shell脚本

    背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件 ...

  4. Linus运行jar包的操作

    cd /    返回最顶层文件夹cd home/numa        进入home下的numa文件夹ll         查看当前文加夹下的所有文件ps -ef | grep java        ...

  5. linux 下检查java jar包 程序是否正常 shell

    linux 下检查java jar包 程序是否正常 shell http://injavawetrust.iteye.com BATCH_SERVER="batch.jar" NR ...

  6. 不显示cmd窗口运行jar包

    今天,打开导出的jar包,发现并不能运行,查看jar包中的META-INF文件夹下的MANIFEST.MF文件,发现MANIFEST.MF中并没有Main-Class,于是,就手动添加相应的信息,本项 ...

  7. spring boot maven打包可运行jar包

    普通打包之后在程序目录运行,或者编写bat运行时会提示“没有主清单属性”,这是因为并没有找到main()方法,需要我们指明告诉java程序 我bat中的代码 @echo off title mytit ...

  8. Linux下如何让jar包程序在后台一直执行

    Linux下如何让Jar包程序在后台一直执行 shell命令 nohup java -jar xxx.jar & &:让程序后台执行. nohub:让程序控制台输出转移到nohub.o ...

  9. 如何打包/运行jar包,及生成exe文件

    关于如何打包/运行jar包,以及生成exe文件.之前各种查询.博客,终于搞明白究竟是咋回事.记得还做过笔记的.今天要打包生成exe用的时候,居然忘了咋怎来着.去查看之前的笔记,死活没找到(好像被删掉了 ...

随机推荐

  1. Windows如何设置动态和静态ip地址

    打开控制面板,一般在电脑的菜单栏能找到,win8和win10可以使用快捷键(win键+X键),找不到的朋友可以搜索一下.   进入到网络和共享中心,点击更改适配器设置.   这里显示的是电脑所以的网络 ...

  2. 初学DirectX(1)

    初学Direct X (1) Direct3D设备用于访问视频卡的帧缓冲区,以及后台缓冲区.由于IDE是vs2013,默认安装了direct 9,只需要在使用头文件(1)并像使用库文件(2)即可 #i ...

  3. git 从头开始

    下载安装git 打开git,输入以下命令,引号内的为你自己的名字和邮箱 git config --global user.name "Your Name"git config -- ...

  4. 使用es6总结笔记

    1. let.const 和 block 作用域 在ES6以前,var关键字声明变量.无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部). let 关键词声明的变量不具备 ...

  5. gitignore 文件生效办法

    .gitignore 可以添加一些不加入git版本控制的文件 比如一些测试文件.因人而异的配置信息等等 .gitignore 文件展示如下 /.idea/target//.classpath /.pr ...

  6. [Clr via C#读书笔记]Cp6类型和成员基础

    Cp6类型和成员基础 成员 常量:字段(静态字段和实例字段):实例构造器:类型构造器(用于静态字段的构造):方法(静态方法和实例方法):操作符重载(本质是一个方法):转换操作符:属性(本质还是方法): ...

  7. lock+Condition

    关键字 synchronized+wait/notify/notifyAll可以实现等待/通知模式,类ReentrantLock可以实现同样的功能,但需要借助Condition对象.Condition ...

  8. CodeForces 908C. New Year and Curling 解题报告 Java

    1. 思路 这题实际上是个几何问题——两个外相切的圆,由勾股定理,他们的纵坐标有以下的规律: 则有$$y_{n+1} = y_{n} + \sqrt{(2r)^2 - (x_{n} - x_{n+1} ...

  9. 【转】自定义(滑动条)input[type="range"]样式

    1.如何使用滑动条? 用法很简单,如下所示: <input type="range" value="0"> 各浏览器原始样式如下: Chrome:  ...

  10. mysql 复杂查询

    1.同一个表下多次查询: sql语句: select b.* ,(select name from exh_common.medicine_type a where b.p_id = a.id) as ...