对于后台服务应用,通常是将应用打包成jar包后,通过编写批处理脚本来启动执行。
这里的启动脚本在windows环境即BAT批处理文件,linux环境即sh bash脚本,其中对于应用的依赖jar包需要通过读取lib目录下的所有jar文件,并设置到path中。
BAT脚本:
@echo off
title MyServer
set pathPrefix=./lib/
set lib=
::遍历参数,并将这些参数拼接起来
for %%i in (./lib/*.jar) do call :concat %%i
set "lib=./;./conf;%lib%"
echo %lib%
java -cp %lib% cn.my.app.main.AppMain
pause
goto :eof
::对参数进行加前缀、拼接
:concat
set lib=%lib%;%pathPrefix%%1
goto :eof
BASH脚本:
1、启动脚本:start.sh
#!/bin/sh
workspace=$(dirname $0);
cd $workspace;
workspace=$PWD;
./status.sh
if [ $? -eq 0 ]
then
lib=MyServer:$PWD:./conf/
for jarpath in `ls lib/*.jar`
do
lib=$lib:$PWD/$jarpath
done
nohup java -cp $lib cn.my.app.main.AppMain >> logs/stdout.log &
echo "Starting MyServer..."
sleep 2
./status.sh
else
echo " MyServer is already running now."
echo " "
fi
tail -200f logs/stdout.log
2、查询应用状态脚本:status.sh
#!/bin/sh
proStatus=`ps -ef|grep java|grep MyServer`
echo " "
echo " Process Status ID"
echo "============================"
if [ -n "$proStatus" ]
then
proID=`echo $proStatus|awk '{print $2}'`
echo "MyServer Up $proID"
echo " "
#jmap -heap $proID
exit 1
else
echo "MyServer Down null"
echo " "
exit 0
fi
运行status.sh显示如下界面:
Process Status ID
============================
MyServer Up 5800
或者
Process Status ID
============================
MyServer Down null
3、停止应用脚本:shudown.sh
#!/bin/sh
workspace=$(dirname $0);
cd $workspace;
workspace=$PWD;
./status.sh
if [ $? -eq 0 ]
then
echo "MyServer is NOT running."
echo " "
else
lib=shutdown_MyServer:$PWD:./conf/
for jarpath in `ls lib/*.jar`
do
lib=$lib:$PWD/$jarpath
done
nohup java -cp $lib cn.my.app.main.Shutdown >> logs/shutdown.log &
echo "MyServer Stopping ..."
sleep 3
./status.sh
if [ $? -eq 0 ]
then
echo "MyServer is NOT running."
echo " "
else
proID=`ps -ef|grep java|grep MyServer |awk '{print $2}'`
echo "Stopping MyServer..."
kill -9 $proID
sleep 1
proID=`ps -ef|grep java|grep shutdown_MyServer |awk '{print $2}'`
echo "Stopping shutdown_MyServer..."
kill -9 $proID
sleep 1
./status.sh
fi
fi