熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

防止同一個Java應用重復啟動的shell腳本

2013-11-23 19:19:29  來源: Java核心技術 

  通常一個Java的後台應用程序在Linux的終端可以啟動多個這樣造成資源浪費甚至相互操作競爭資源導致問題這裡通過也shell腳本啟動應用在shell腳本中做了些限制就可以巧妙避免重復啟動的問題了

  比如應用的目錄結構為

  app

  bin(存放啟動腳本startupsh和class文件配置文件等)

  lib(存放引用的庫)

  假設應用的類名為mypackMyAppMain

  startupsh

  #!/bin/sh

  programdir=

  program=mypackMyAppMain

  num=$#

  temp=$CLASSPATH

  #setting libs path

  libs=/lib/*

  append(){

  temp=$temp:$

  }

  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 $}`

  if [ n $res ]

  then

  echo MyAppMain already running

  else

  nohup java    classpath $CLASSPATH    mypackMyAppMain &

  sleep

  unset res

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

  if [ n $res ]

  then

  echo MyAppMain start success

  else

  echo MyAppMain start error

  fi

  fi

  然後通過此腳本來啟動就可以解決問題了

  注意

  啟動時候還可能出現startupsh沒有執行權限的問題改為

  還有可能出現錯誤信息

  : bad interpreter: 沒有那個文件或目錄

  這是因為startupsh腳本的編碼不對你需要保證文檔格式是UNIX的這個問題好多人栽過跟頭我也不例外以為shell腳本語法不對其實是文件編碼的問題!

  下面給出沒有限制的重復啟動問題的腳本

  #!/bin/sh

  programdir=

  num=$#

  temp=$CLASSPATH

  #setting libs path

  libs=/lib/*

  append(){

  temp=$temp:$

  }

  for file in $libs;    do

  append $file

  done

  export CLASSPATH=$temp::/:$programdir

  export LANG=zh_CN

  nohup java    classpath $CLASSPATH    mypackMyAppMain &


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26662.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.