Linux下shell通用脚本启动jar(微服务)
Linux下shell通用脚本启动jar(微服务)
vim app_jar.sh
#!/bin/bash #source /etc/profile
# Auth:Liucx
# Please change these parameters according to your real env.
# set Java Home: Remember that dolphin only supports JDK8!
JAVA_HOME=/usr/java/jdk1..0_162 # application directory
cd `dirname $`
APP_HOME=`pwd` APP_NAME="`cd ${APP_HOME} && find -name '*.jar' `"
JAR_HOME=`pwd |awk -F"/" '{print $NF}'`
# Java JVM lunch parameters
if [ x"$JAVA_MEM_OPTS" == x ];then
JAVA_MEM_OPTS="-server -Xms512m -Xmx512m -Xmn128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
fi # waiting timeout for starting, in seconds
START_WAIT_TIMEOUT= psid= checkpid() {
javaps=`$JAVA_HOME/bin/jps -l | grep "$JAR_HOME"`
if [ -n "$javaps" ]; then
psid=`echo $javaps | awk '{print $1}'`
else
psid=
fi
} start() {
checkpid if [ $psid -ne ]; then
echo "================================"
echo "warn: $APP_NAME already started! (pid=$psid)"
echo "================================"
else
echo -n "Starting $APP_NAME ..."
#-Dspring.profiles.active=dev 指定环境
nohup $JAVA_HOME/bin/java -jar -Dspring.profiles.active=dev -DCONFIG_ENABLE=true $JAVA_MEM_OPTS ${APP_NAME} >${JAR_HOME}.log >& &
checkpid
if [ $psid -ne ]; then
echo "(pid=$psid) [OK]"
else
echo "[Failed]"
fi
fi
} stop() { sleep
checkpid if [ $psid -ne ]; then
echo -n "Stopping $APP_NAME ...(pid=$psid) "
#kill - $psid
kill - $psid
if [ $? -eq ]; then
echo "[OK]"
else
echo "[Failed]"
fi # checkpid
# if [ $psid -ne ]; then
# stop
# fi
else
echo "================================"
echo "warn: $APP_NAME is not running"
echo "================================"
fi
} status() {
checkpid if [ $psid -ne ]; then
echo "$APP_NAME is running! (pid=$psid)"
else
echo "$APP_NAME is not running"
fi
} info() {
echo "System Information:"
echo "****************************"
echo `head -n /etc/issue`
echo `uname -a`
echo
echo "JAVA_HOME=$JAVA_HOME"
echo `$JAVA_HOME/bin/java -version`
echo
echo "APP_HOME=$APP_HOME"
echo "APP_NAME=$APP_NAME"
echo "****************************"
} case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart')
stop
echo "You restart the application ..."
start #
;;
'status')
status
;;
'info')
info
;;
*)
echo "Usage: $0 {start|stop|restart|status|info}"
exit
esac
使用方式:
app_jar.sh start
app_jar.sh stop
app_jar.sh restart
注:该脚本只需要放在jar包当前目录下即可,脚本当前目录只允许存在一个jar包,如果多个会同时启动或重启
还需提醒下:启动的jar包名主体不能改变,防止脚本无效。目前正在公司生产环境使用中,希望您纠正,提出建议。
Linux下shell通用脚本启动jar(微服务)的更多相关文章
- linux 下shell 编写脚本
linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...
- linux下shell脚本执行jar文件
最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...
- windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)
前言: 最近公司做了一个工具,要将这个工具打包成一个可运行的程序,编写start.bat和start.sh在windows和linux下都可以运行. 在网上找了很多资料,最后终于找到一个可靠的资料,记 ...
- Linux下定时执行脚本(转自Decode360)
文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog 老师(业精于勤而荒于嬉 ...
- 实用脚本 2 -- Linux下定时执行脚本
今天学习Linux下定时执行脚本,看到一篇讲解比较好的文章,特此拿来分享. 原文链接:http://www.blogjava.net/decode360/archive/2009/09/18/2877 ...
- MongoDB Linux下的安装和启动(转)
1. 下载MongoDB,此处下载的版本是:mongodb-linux-i686-1.8.1.tgz.tar. http://fastdl.mongodb.org/linux/mongodb-linu ...
- Django项目部署在Linux下以进程方式启动
Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...
- Linux 下shell 编程学习脚手架
linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...
- Linux 下Shell的学习
1.Shell学习 1.什么是Shell shell是一个命令解析器,在操作系统的最外层,负责和用户对话,将用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果.2.什么是shell脚本 ...
随机推荐
- Selenium+Java(一)Selenium基础环境配置
前言 Selenium在Java中是以Jar包的形式存在,如要使用Java编写Selenium自动化测试用例,需要导入Jar包. selenium需要的Jar包下载地址: http://seleniu ...
- 2019牛客暑期多校训练营(第九场)Quadratic equation——二次剩余(模奇素数)
题意:给定p=1e9+7,构造x,y使其满足(x+y) mod p = b,(x*y) mod p = c . 思路:不考虑取模的情况下, .在取模的意义下,,因为a是模p的二次剩余的充分必要条件为 ...
- python-面向对象之封装
封装 面向对象三大特性: 继承 封装 多态 隐藏对象的属性和实现细节,仅对外提供公共访问方法 广义上的封装 : 把方法和变量都封装在类中 狭义上的封装 : 在类的外部干脆不能调用了 优点 将变化隔离 ...
- Spring(Bean)5
spel <bean id="address" class="com.atguigu.spring.beans.spel.Address"> < ...
- 【RN - 基础】之React Native组件的生命周期
下图描述了React Native中组件的生命周期: 从上图中可以看到,React Native组件的生命周期可以分为初始化阶段.存在阶段和销毁阶段. 实例化阶段 实例化阶段是React Native ...
- Spring MVC使用ModelAndView进行重定向
1.Servlet重定向forward与redirect: 使用servlet重定向有两种方式,一种是forward,另一种就是redirect.forward是服务器内部重定向,客户端并不知道服务器 ...
- Python存储数据的方式
在Python开发中,数据存储.读取是必不可少的环节,而且可以采用的存储方式也很多,常用的方法有json文件.csv文件.MySQL数据库.Redis数据库以及Mongdb数据库等. 1. json文 ...
- 硬核! 逛了4年Github ,一口气把我收藏的 Java 开源项目分享给你!
Awsome Java Great Java project on Github(Github 上非常棒的 Java 开源项目). English Version 大家都知道 Github 是一个程序 ...
- js中innerHTML和outerHTML的相同与不同
innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML,包括标签. outerHTML 设置或获取对象及其内容的HTML形式,也就是标签和文本内容全都显示出来 innerText ...
- 【开发者portal在线开发插件系列二】多条上下行消息(messageId的使用)【华为云技术分享】
前言和基本操作请参考[开发者portal在线开发插件系列一]profile和基本上下行消息,此处不再复述,没操作过的小伙伴一定要先去看看哦~ 话不多说,开始今天的演(表)示(演) 场景说明: 假设一: ...