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