运行Jar包程序Shell
启动:
#!/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的更多相关文章
- windows 下启动运行 jar 包程序
windows 下 运行 jar 包 java -jar XXX.jar java -server -Xms1024m -Xmx20480m -jar $JAR_NAME.jar windows 后台 ...
- 【原】无脑操作:Centos 7后台运行及终止jar包程序
1.后台运行jar包程序,输入:nohup java -jar /路径/程序.jar & 2.后台终止jar包程序,输入:ps -ef | grep java,查看使用java命令的进程,再输 ...
- 一个简单的Linux启动jar包的shell脚本
背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件 ...
- Linus运行jar包的操作
cd / 返回最顶层文件夹cd home/numa 进入home下的numa文件夹ll 查看当前文加夹下的所有文件ps -ef | grep java ...
- linux 下检查java jar包 程序是否正常 shell
linux 下检查java jar包 程序是否正常 shell http://injavawetrust.iteye.com BATCH_SERVER="batch.jar" NR ...
- 不显示cmd窗口运行jar包
今天,打开导出的jar包,发现并不能运行,查看jar包中的META-INF文件夹下的MANIFEST.MF文件,发现MANIFEST.MF中并没有Main-Class,于是,就手动添加相应的信息,本项 ...
- spring boot maven打包可运行jar包
普通打包之后在程序目录运行,或者编写bat运行时会提示“没有主清单属性”,这是因为并没有找到main()方法,需要我们指明告诉java程序 我bat中的代码 @echo off title mytit ...
- Linux下如何让jar包程序在后台一直执行
Linux下如何让Jar包程序在后台一直执行 shell命令 nohup java -jar xxx.jar & &:让程序后台执行. nohub:让程序控制台输出转移到nohub.o ...
- 如何打包/运行jar包,及生成exe文件
关于如何打包/运行jar包,以及生成exe文件.之前各种查询.博客,终于搞明白究竟是咋回事.记得还做过笔记的.今天要打包生成exe用的时候,居然忘了咋怎来着.去查看之前的笔记,死活没找到(好像被删掉了 ...
随机推荐
- 跟浩哥学自动化测试Selenium -- 浏览器的基本操作与元素定位(3)
浏览器的基本操作与元素定位 通过上一章学习,我们已经学会了如何设置驱动路径,如何创建浏览器对象,如何打开一个网站,接下来我们要进行一些复杂的操作比如先打开百度首页,在打开博客园,网页后退,前进等等,甚 ...
- (C#)原型模式—深复制与浅复制
1.原型模式 用原型实例指定创建对象的实例,并且通过拷贝这些原型创建新的对象. *原型模式隐藏了创建对象的细节,提高了性能. *浅复制:被复制对象的所有变量都含有与原来对象相同的值,而且所有对其他对象 ...
- Spring Cloud(十一):服务网关 Zuul(过滤器)【Finchley 版】
Spring Cloud(十一):服务网关 Zuul(过滤器)[Finchley 版] 发表于 2018-04-23 | 更新于 2018-05-07 | 在上篇文章中我们了解了 Spring ...
- 返回json数组的GET接口
Action() { web_reg_find("Search=Body", "SaveCount=find_cnt", "Text=code\&qu ...
- pthon web框架flask(一)
pthon web框架优劣: 知乎上有一个讨论Python 有哪些好的 Web 框架?,从这个讨论中最后我选择了flask,原因是: Django,流行但是笨重,还麻烦,人生苦短,肯定不选 web.p ...
- win32绘制自定义类窗口导致绘制11个窗口的解决办法
上网查了一圈也没有找到解决问题的办法,一旦创建了一个窗口,并且在过程函数中绘制窗口,尤其是一些非子窗口的自定义类窗口,都会生成11个窗口(算上主窗口就是12个),但是使用系统通用控件就不会有这种情况的 ...
- @ConfigurationProperties注解对数据的自动封装
@ConfigurationProperties注解对数据的自动封装 @ConfigurationProperties可以对基本数据类型实现自动封装,可以封装格式为yyyy/MM/dd的日期 测试代码 ...
- 从hive导入到oracle(Hcatalog)
1.使用catalog的情况下: sqoop export --table tableName2 \ #oracle表 --connect jdbc:oracle:thin:@127.0.0.1:15 ...
- [c++] Getting Started - CMake
CMake is an open-source cross platform build system, according to CMake's creator, Kitware. But CMak ...
- POJ 3693 Maximum repetition substring(后缀数组)
Description The repetition number of a string is defined as the maximum number R such that the strin ...