避免同一个Java操纵反复启动的shell脚本[Java编程]
本文“避免同一个Java操纵反复启动的shell脚本[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
普通,一个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" ]
then
echo "MyAppMain start success"
else
echo "MyAppMain start error"
fi
fi
然后通过此脚本来启动,便可以办理问题了.
注意:
启动时刻还大概呈现startup.sh没有履行权限的问题,改成777.
还有大概呈现错误信息:
: bad interpreter: 没有那个文件或目录
这是因为startup.sh脚本的编码不对,你需求保证文档格局是UNIX的,这个问题好多人栽过跟头,我也不例外,认为shell脚本语法不对,其实是文件编码的问题!
下面给出没有限制的反复启动问题的脚本:
#!/bin/sh
programdir="."
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
nohup java -classpath $CLASSPATH mypack.MyAppMain &
出处:http://lavasoft.blog.51cto.com/62575/243360
以上是“避免同一个Java操纵反复启动的shell脚本[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |