java项目部署脚本

#!/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  
相关文章
相关标签/搜索