java

位置:IT落伍者 >> java >> 浏览文章

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


发布日期:2024年04月22日
 
防止同一个Java应用重复启动的shell脚本

通常一个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 &

               

上一篇:轻松实现Java用户界面编程

下一篇:JAVA语言编程中如何使用表达式