#!/bin/bash
echo '$*:' $*
action=''
jarname=''
profile='default'
jvmOpts='' #eg: --server.port=8081
while getopts ":s:n:p:c:" opt
do
case $opt in
s)
action=$OPTARG
;;
n)
jarname=$OPTARG
;;
p)
profile=$OPTARG
;;
c)
jvmOpts=$OPTARG
;;
?)
echo "参数包含了无效的参数,请从{s,n,p,c}中选择"
exit 1;;
esac
done
#echo "jarname:" $jarname
#echo "profile:" $profile
#echo "jvmOpts:" $jvmOpts
usage() {
echo "Usage: sh 执行脚本.sh -s [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=` ps -ef|grep java|grep $jarname|grep -v grep|awk '{print $2}' `
echo $pid
#如果不存在返回1,存在返回0
if [ -z "$pid" ]; then
return 1
else
return 0
fi
}
start(){
echo "service start..."
is_exist
if [ $? -eq "0" ]; then
echo ">>> ${jarname} is already running PID=${pid} <<<"
else
nohup java -Xms256m -Xmx512m -server -jar \
${jarname}"-0.0.1-SNAPSHOT.jar" \
--spring.profiles.active=$profile \
$jvmOpts > ${jarname}.log 2>&1 &
PID=${jarname}\.pid
echo $! > $PID
echo ">>> start $jarname successed PID=$! <<<"
fi
}
stop(){
echo "service stop..."
#is_exist
PID=${jarname}\.pid
pidf=$(cat $PID)
#echo "$pidf"
echo ">>> api PID = $pidf begin kill $pidf <<<"
kill $pidf
rm -rf $PID
sleep 2
is_exist
if [ $? -eq "0" ]; then
echo ">>> api 2 PID = $pid begin kill -9 $pid <<<"
kill -9 $pid
sleep 2
echo ">>> $jarname process stopped <<<"
else
echo ">>> ${jarname} is not running <<<"
fi
}
restart(){
echo "service restart..."
stop
start
}
status(){
echo "service status..."
is_exist
if [ $? -eq "0" ]; then
echo ">>> ${jarname} is running PID is ${pid} <<<"
else
echo ">>> ${jarname} is not running <<<"
fi
}
action(){
matches=` echo $action | grep -oE '^(start|stop|restart|status)$' `
if [ $matches ]; then
if [ $matches == "start" ]; then
start
fi
if [ $matches == "stop" ]; then
stop
fi
if [ $matches == "restart" ]; then
restart
fi
if [ $matches == "status" ]; then
status
fi
else
usage
fi
}
action
exit 0