防止同一个Java应用重复启动的shell脚本

2014-11-14 23:00:37 · 作者: · 浏览: 32

  通常,一个Java的后台应用程序,在Linux的终端可以启动多个,这样造成资源浪费,甚至相互操作竞争资源导致问题。这里通过也shell脚本启动应用,在shell脚本中做了些限制。就可以巧妙避免重复启动的问题了。


  比如应用的目录结构为:


  app


  bin(存放启动脚本startup.sh和class文件、配置文件等。)


  lib(存放引用的库)


  假设应用的类名为:mypack.MyAppMain


  startup.sh


  #!/bin/sh


  programdir="."


  program="mypack.MyAppMain"


  num=$#


  temp=$CLASSPATH


  #setting libs path


  libs=../lib/*


  append(){


  temp=$temp":"$1


  }


  for file in $libs; do


  append $file


  done


  export CLASSPATH=$temp:.:../:$programdir


  export LANG=zh_CN


  res=`ps aux|grep java|grep $program|grep -v grep|awk '{print $2}'`


  if [ -n "$res" ]


  then


  echo "MyAppMain already running"


  else


  nohup java -classpath $CLASSPATH mypack.MyAppMain &


  sleep 3


  unset res


  res=`ps aux|grep java|grep $program|grep -v grep|awk '{print $2}'`


  if [ -n "$res" ]