功能: 在linux上执行 启动:sh tool.sh start , 停止:sh tool.sh stop。目录结构如下所示:*.jar为java代码包,lib下为程序依赖的jar,log下为本程序生成运行的过程日志,resources里面为相关资源配置文件等。该脚本需要tool.sh和程序jar需要在一个目录下(可修改)。
目录结构:
脚本如下:
#!/bin/bash
USER_DIR=`pwd`/log
# jar包名称
JAR_NAME=ApplicationDemo.jar
JAR_PATH=`pwd`/$JAR_NAME
# 主类即main方法所在的启动类
MAIN_CLASS=com.na.NativeApplication
# 定义色彩
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \\033[0;39m"
# 各种控制台颜色方法输出
function LogMsg()
{
time=`date "+%D %T"`
echo "[$time] : INFO : $*"
$SETCOLOR_NORMAL
}
function LogWarnMsg()
{
time=`date "+%D %T"`
$SETCOLOR_WARNING
echo "[$time] : WARN : $*"
$SETCOLOR_NORMAL
}
function LogSucMsg()
{
time=`date "+%D %T"`
$SETCOLOR_SUCCESS
echo "[$time] : SUCCESS : $*"
$SETCOLOR_NORMAL
}
function LogErrorMsg()
{
time=`date "+%D %T"`
$SETCOLOR_FAILURE
echo "[$time] : ERROR : $*"
$SETCOLOR_NORMAL
}
if [ ! -d $USER_DIR ];then
mkdir -p $USER_DIR
fi
# 检查机器环境java版本
check_java(){
JAVA_VERSION_NUM="1.7"
JAVA_VERSION=`java -version 2>&1`
LogMsg $JAVA_VERSION
if [[ $JAVA_VERSION =~ $JAVA_VERSION_NUM ]]
then
LogSucMsg "OK!Java1.7 installed"
else
LogErrorMsg "Error! not found java 1.7! please installed jdk 1.7 version first!"
exit 0
fi
}
# 脚本启动样例提示
input_type(){
LogMsg " sh tool.sh <TYPE>"
LogMsg " TYPE:"
LogMsg " start"
LogMsg " stop"
}
# 启动
start(){
LogSucMsg "begin start server"
check_java
LogMsg "CurrentPath:$JAR_PATH"
confpath=".:./resources/"
libpath="$confpath:$JAR_PATH"
# 遍历lib下的所有jar加入到启动命令中
for jar in `find ./lib/ -name "*.jar" 2>/dev/null`
do
libpath="$libpath:$jar"
done
LogMsg "$JAVA_HOME/bin/java -classpath $libpath $MAIN_CLASS"
# 日志全部输出到log目录下的tool.log中
nohup $JAVA_HOME/bin/java -classpath $libpath $MAIN_CLASS > $USER_DIR/tool.log 2>&1 &
LogSucMsg "start succeed!"
}
# 停止程序
stop(){
LogSucMsg "begin close server"
# 通过程序名称找到运行的全部进程id 逐一 kill干掉
pids=$(ps -ef |grep 'NativeApplication' | awk '{print $2}')
for pid in $pids
do
kill -9 $pid
LogSucMsg "kill pid $pid !"
done
LogSucMsg "close succeed!"
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
input_type
exit 0
esac