一行命令实现Java项目启动停止和重启

一行命令实现Java项目启动停止和重启

一行命令实现Java项目启动停止和重启

功能

  • 默认不入参是启动项目
  • 支持项目启动、停止、重启:start | stop | restart
  • 支持自定义java路径和jvm参数

使用

[root@master Desktop]# ./bin/demo-sh_start.sh start
程序名称: /root/Desktop/demo-app-sh-1.2.1-SNAPSHOT.jar
日志名称: demo-app-sh-1.2.1-SNAPSHOT
Java配置: -Xmx1024M -Xms256M
程序未运行
开始启动程序 
[root@master Desktop]# ./bin/demo-sh_start.sh stop
程序名称: /root/Desktop/demo-app-sh-1.2.1-SNAPSHOT.jar
日志名称: demo-app-sh-1.2.1-SNAPSHOT
Java配置: -Xmx1024M -Xms256M
程序已运行,PID:[ 10864 ]
停止程序
[root@master Desktop]# ./bin/demo-sh_start.sh restart
程序名称: /root/Desktop/demo-app-sh-1.2.1-SNAPSHOT.jar
日志名称: demo-app-sh-1.2.1-SNAPSHOT
Java配置: -Xmx1024M -Xms256M
程序未运行
重启程序 0 

脚本

#!/bin/sh
# 服务和java配置
appName=%s   # 这里替换jar路径, 如:./demo-app.jar, 建议使用绝对路径
JAVA_HOME=java
JAVA_OPT="-Xmx1024M -Xms256M"
# 日志
logName=$(basename ${appName} .jar)
# 输出程序信息
echo "程序名称:" ${appName}
echo "日志名称:" ${logName}
echo "Java配置:" ${JAVA_OPT}

# 判断是否已经启动
v_pid=$(ps -ef | grep ${logName} | grep -v grep | awk '{print $2}')
if [ -z $v_pid ]; then
  echo "程序未运行"
else
  echo "程序已运行,PID:[" ${v_pid} "]"
fi

if [ $# = 0 ]; then
  # 默认直接启动程序
  if [ -z $v_pid ]; then
    echo "开始启动程序"
  else
    echo "终止本次启动"
    exit 1
  fi
  # 运行java
  nohup ${JAVA_HOME} -jar ${JAVA_OPT} ${appName} >>${logName}.log 2>&1 &
else
  # 停止
  if [ $1 = "stop" ]; then
    s_killRes=$(kill ${v_pid})
    echo "停止程序" ${s_killRes}
    exit 0
  # 重启
  elif [ $1 = "restart" ]; then
  # 重启
    if [ -z $v_pid ]; then
      s_killRes="0"
    else
      s_killRes=$(kill ${v_pid})
    fi
    echo "重启程序" ${s_killRes}
  # 运行
  elif [ $1 = "start" ]; then
    if [ -z $v_pid ]; then
      echo "开始启动程序"
    else
      echo "终止本次启动"
      exit 1
    fi
  else
    echo "未知的指令, 请输入 [start | stop | restart]"
    exit 1
  fi
  # 启动
  nohup ${JAVA_HOME} -jar ${JAVA_OPT} ${appName} >>${logName}.log 2>&1 &
fi

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值