#!/bin/sh

#java

export JAVA_HOME=/root/java/jdk

#日志目录

export LOG_HOME=`pwd`/

#项目名称

APP_NAME=xxx.jar

#jvm参数配置

export JAVA_OPTS="-server -Xmx1g -Xms1g -Xmn512m -XX:SurvivorRatio=4 -XX:PermSize=128m -XX:MaxPermSize=256m -Xss256k -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:GCPauseIntervalMillis=200 -XX:+DisableExplicitGC -Djava.awt.headless=true "

#检查程序运行状态

checkpid(){

javaps=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`

if [ -n "$javaps" ]; then

psid=`echo $javaps | awk '{print $1}'`

else

psid=0

fi

}

###################################

#(函数)启动程序

#说明:

#1. 首先调用checkpid函数,刷新$psid全局变量

#2. 如果程序已经启动($psid不等于0),则提示程序已启动

#3. 如果程序没有被启动,则执行启动命令行

#4. 启动命令执行后,再次调用checkpid函数

#5. 如果步骤4的结果能够确认程序的pid,则打印[OK],否则打印[Failed]

#注意:echo -n 表示打印字符后,不换行

###################################

start() {

checkpid

if [ $psid -ne 0 ]; then

echo "================================"

echo "程序已经启动! (pid=$psid)"

echo "================================"

else

echo "启动 ..."

nohup $JAVA_HOME/bin/java $JAVA_OPTS -DLOG_HOME=$LOG_HOME  -jar $APP_NAME > /dev/null 2>&1 &

echo $! > tpid

echo "启动成功!"

checkpid

if [ $psid -ne 0 ]; then

echo "(pid=$psid) [OK]"

else

echo "[Failed]"

fi

fi

}

###################################

#说明:

#1. 首先调用checkpid函数,刷新$psid全局变量

#2. 如果程序已经启动($psid不等于0),则开始执行停止,否则,提示程序未运行

#3. 使用kill -15 pid命令会先释放自己的资源,然后在停止

#4. 执行kill命令行紧接其后,马上查看上一句命令的返回值: $?

#5. 如果步骤4的结果$?等于0,则打印[OK],否则打印[Failed]

#6. 为了防止java程序被启动多次,这里增加反复检查进程,反复杀死的处理(递归调用stop)。

#注意: 在shell编程中,"$?" 表示上一句命令或者一个函数的返回值

###################################

stop() {

checkpid

if [ $psid -ne 0 ]; then

echo -n "停止程序 ...(pid=$psid) "

kill -15 $psid

if [ $? -eq 0 ]; then

echo "[OK]"

else

echo "[Failed]"

fi

checkpid

if [ $psid -ne 0 ]; then

stop

fi

else

echo "================================"

echo "程序没有运行!!!"

echo "================================"

fi

}

###################################

#说明:

#1. 首先调用checkpid函数,刷新$psid全局变量

#2. 如果程序已经启动($psid不等于0),则提示正在运行并表示出pid

#3. 否则,提示程序未运行

###################################

status() {

checkpid

if [ $psid -ne 0 ];  then

echo "程序正在运行! (pid=$psid)"

else

echo "程序没有运行!!!"

fi

}

###################################

#(函数)打印系统环境参数

###################################

info() {

echo "System Information:"

echo "****************************"

echo `head -n 1 /etc/issue`

echo `uname -a`

echo

echo "JAVA_HOME=$JAVA_HOME"

echo `$JAVA_HOME/bin/java -version`

echo

echo "APP_NAME=$APP_NAME"

echo "LOG_HOME=$LOG_HOME"

echo "****************************"

}

###################################

#读取脚本的第一个参数($1),进行判断

#参数取值范围:{start|stop|restart|status|info}

#如参数不在指定范围之内,则打印帮助信息

###################################

case "$1" in

'start')

start

;;

'stop')

stop

;;

'restart')

stop

start

;;

'status')

status

;;

'info')

info

;;

*)

echo "Usage: $0 {start|stop|restart|status|info}"

exit 1

esac

exit 0

java脚本项目_java项目部署脚本 - xixingzhe的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. java 图形 登录_java登录图形界面 - osc_994n5tsc的个人空间 - OSCHINA - 中文开源技术交流社区...

    编写程序,利用JtextField和JpasswordField分别接收用户输入的用户名和密码,并对用户输入的密码进行检验.对于每个用户名有三次密码输入机会. package beizi; impor ...

  2. java 递归死循环_Java递归 - 感觉太煽情的个人空间 - OSCHINA - 中文开源技术交流社区...

    树节点类: package cn.com.tree; public class Node { private Integer id; private Integer parentId; private ...

  3. java通讯方式_Java线程通讯方式 - osc_63rgy8af的个人空间 - OSCHINA - 中文开源技术交流社区...

    l  休眠唤醒方式: Object的wait.notify.notifyAll Condition的await.signal.signalAll l  CountDownLatch:用于某个线程A等待 ...

  4. php项目后的感受,PHP项目感受4 - 刘景刘恒的个人空间 - OSCHINA - 中文开源技术交流社区...

    通过两周的商城项目,受益匪浅,以前自己根本没有项目经验,所以很多知识点都只是知识点而已,并没有在实践中加以熟悉和理解,很多东西以为自己记住了,知道了,可是一到用的时候却该做什么都不知道,所以在这里很感 ...

  5. java 写入环境变量_Java环境变量配置 - import_key的个人空间 - OSCHINA - 中文开源技术交流社区...

    Java 环境变量和路径 在 Solaris 系统上,必须先设置 JAVA_HOME 和 PATH 环境变量,Sun Management Center 3.6 安装向导.设置向导和 Java 控制台 ...

  6. java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...

    java基础(2)--运算符详解 自增自减规则 自增自减就是常用的 a = a++ 或者 a = ++a;前者是后缀式,先把a赋值给a,再加一:后者是后缀式,先加一,在赋值给a;而且a++,++a并不 ...

  7. java方法调用机制_Java方法调用机制 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...

    最近在编程时,修改方法传入对象的对象引用,并没有将修改反映到调用方法中.奇怪为什么结果没有变化,原因是遗忘了Java对象引用和内存分配机制.本文介绍3个点: ① 该问题举例说明 ② 简要阐述Java内 ...

  8. java创建两个foo方法_Java类实例化原理 - osc_foo7glsg的个人空间 - OSCHINA - 中文开源技术交流社区...

    Java对象的创建过程包括类初始化(类实例化两个阶段. 一.Java对象创建时机 (1)使用new关键字创建对象 (2)反射创建对象 使用Class类的newInstance方法 Student st ...

  9. java回调函数的生命_Java的回调函数 - choaklin 的个人空间 - OSCHINA - 中文开源技术交流社区...

    暂且不提回调函数的各种定义,如我本人,虽然知道JavaScript的回调的使用,但是百科了回调的定义,还是觉得云里来雾里去.所以大可先从已熟悉的入手,旁推侧引它的原理,再引出Java版的实现. 因为博 ...

最新文章

  1. python 全栈开发,Day132(玩具管理页面,控制玩具通讯录,基于请求的好友关系建立)...
  2. 谁说用 Git 一定要用命令行?试试 SourceTree 吧
  3. python笔记基础-Python笔记-基础
  4. mac 上的环境变量配置
  5. iOS中EXC_BAD_ACCESS解决办法
  6. 前端接收pdf文件_如何实现springmvc将返回的给前端的pdf文件放在浏览器里预览
  7. 医疗行业的售前工程师如何撰写人工智能案例申请材料
  8. 常见设计模式描术(看完就把它忘记~~)
  9. SELinux系列(十三)—默认安全上下文的查询和修改(semanage命令)
  10. linux应用之Lamp(apache+mysql+php)的源码安装(centos)
  11. C语言函数未声明错误,switch 调用函数 错误未定义???
  12. 测试ai模糊软件,“马赛克视频”AI还原软件被疯传!测试效果出乎意料!
  13. iOS 适配iPhone XR/XS/XS MAX
  14. 华为防火墙做单臂路由_华为单臂路由配置实例
  15. SAM/BAM文件格式简介(一)
  16. 计算机硬盘无法启动怎么办,开机后硬盘无法引导怎么办
  17. 一点点墨水滴在纸上写出来的字体
  18. 中国农业科学院培训中心职业技能等级证书及培训证书
  19. ffmpeg webm 提取_ffmpeg简单使用教程 转码、压制、提取、截取、合并、录屏等
  20. Java计算机IT编程文档

热门文章

  1. C语言调用自定义交换函,C语言函数篇 - personal page of Msingwen - OSCHINA - 中文开源技术交流社区...
  2. 区块链开发指南_区块链开发完全指南
  3. android传感器开发与智能设备案例实战_【我的物联网成长记2】设备如何进行选型?...
  4. Keepalived实现mysql高可用
  5. Oracle触发器5-Instead of触发器
  6. 优化mysql的21个建议_MySQL优化小建议
  7. netty 关闭chnnal_Netty 源码学习——服务端流程分析
  8. php 上传 excel xlsx_在PHP中创建和编辑Excel电子表格
  9. python 运算符重载_Python 炫技操作:模块重载的五种方法
  10. java数组循环扩容_Java中实现数组动态扩容的两种方法