使用shell脚本启动java后台线程

8 篇文章 0 订阅

启动脚本如下(文件名称run.sh)

#!/bin/sh
#===============此处的APP_MAINCLASS 是main 方法所在类
APP_MAINCLASS=com.iflytek.sgy.sjxj.node.main.NodeStartup
JMS_OPTS="-Xms256m -Xmx1024m"
#==============此处的debug_opts 是设置java 远程调试(remote java application)
DUBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6005"

#===================================================
APP_HOME=`dirname $0` 
CLASSPATH=$APP_HOME/
psid=0
#===================================================

checkpid2(){
  javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`
 
  if [ -n "$javaps" ]; then
      psid=`echo $javaps | awk '{print $1}'`
  else
      psid=0
  fi
}
checkpid(){
    if [ ! -f "$APP_HOME/server.pid" ]; then 
        psid=0
    else
        psid=`cat $APP_HOME/server.pid` 
        javaps=`ps -p $psid | grep java`
        if [ -z "$javaps" ]; then
            psid=0
            rm -rf $APP_HOME/server.pid   
        fi
    fi 
}

start() {
  checkpid
 
  if [ $psid -ne 0 ]; then
      echo "================================"
      echo "warn: $APP_MAINCLASS already started! (pid=$psid)"
      echo "================================"
  else
      echo -n "Starting $APP_MAINCLASS ..."
        if [ ! -d "$APP_HOME/../log/" ]; then 
	    mkdir "$APP_HOME/../log/"
	fi 
	cd $APP_HOME
	#nohup java -classpath .:../lib/*:../resources $JMS_OPTS $DUBUG_OPTS $APP_MAINCLASS >> $APP_HOME/../log/server.log 2>&1 &   
	
	nohup java -classpath .:../lib/*:../resources $JMS_OPTS $DUBUG_OPTS $APP_MAINCLASS $@>/dev/null 2>&1 &   
	echo $! > $APP_HOME/server.pid
 
	checkpid
	if [ $psid -ne 0 ]; then
	    echo "(pid=$psid) [OK]"
        else
            echo "[Failed]"
      fi
  fi
}
 

stop() {
  checkpid
 
  if [ $psid -ne 0 ]; then
      echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) "
      su - $RUNNING_USER -c "kill -9 $psid"
      rm -rf $APP_HOME/server.pid   
      if [ $? -eq 0 ]; then
        echo "[OK]"
      else
        echo "[Failed]"
      fi
 
      checkpid
      if [ $psid -ne 0 ]; then
        stop
      fi
  else
      echo "================================"
      echo "warn: $APP_MAINCLASS is not running"
      echo "================================"
  fi
}

status() {
  checkpid
 
  if [ $psid -ne 0 ];  then
      echo "$APP_MAINCLASS is running! (pid=$psid)"
  else
      echo "$APP_MAINCLASS is not running"
  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_HOME=$APP_HOME"
  echo "APP_MAINCLASS=$APP_MAINCLASS"
  echo "****************************"
}
 

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


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值