shell脚本实现jar包的启停
#!/bin/bash
param0=$0
param1=$1
param2=$2
service_names=('imcc-system.jar' 'imcc-auth.jar' 'imcc-gen.jar' 'imcc-gateway.jar' 'imcc-gateway-api.jar' 'imcc-platform.jar' 'imcc-job.jar' 'imcc-xxl-job-admin.jar' 'imcc-call.jar' 'imcc-doc.jar')
java_cmd="nohup java -Xms128m -Xmx256m -Dplumelog.log=false -Duser.timezone=GMT+8 -Duser.language=zh -Duser.country=CN -Dspring.cloud.nacos.server-addr=10.18.96.88:18848 -Dspring.profiles.active=wpzs"
pid_path="/ndata/wpzs/service-pids"
param1_length=$(expr length "$param1")
if [ $param1_length == 0 ]
then
echo "启动服务"
for service_name in ${service_names[@]}
do
processNum=$(ps -ef| grep $service_name | grep -v grep | wc -l)
if [ $processNum -eq 0 ]
then
$java_cmd -jar $service_name &
service_name_prefix=(${service_name//./ })
echo $! > $pid_path/${service_name_prefix[0]}.pid
echo $service_name "正在启动中。。。"
fi
done
else
if [ $param1 == '-s' ]
then
param2_length=$(expr length "$param2")
if [ $param2_length -gt 0 ]
then
echo "启动指定服务 $param2"
$java_cmd -jar $param2 &
service_name_prefix=(${param2//./ })
echo $! > $pid_path/${service_name_prefix[0]}.pid
echo "$param2 正在启动中。。。"
else
echo "语法错误:$param1, 可以输入 '--help' 查询参数"
fi
elif [ $param1 == '-r' ]
then
param2_length=$(expr length "$param2")
if [ $param2_length -gt 0 ]
then
echo "重启服务 $param2"
$param0 -e $param2
$param0 -s $param2
else
echo "重启服务"
$param0 -e
$param0
fi
elif [ $param1 == '-e' ]
then
param2_length=$(expr length "$param2")
if [ $param2_length -gt 0 ]
then
echo "停止指定服务 $param2"
service_name_prefix=(${param2//./ })
pid=$(cat $pid_path/${service_name_prefix[0]}.pid)
kill -9 $pid
else
echo "停止所有服务"
for service_name in ${service_names[@]}
do
service_name_prefix=(${service_name//./ })
pid=$(cat $pid_path/${service_name_prefix[0]}.pid)
kill -9 $pid
done
fi
elif [ $param1 == '--help' ]
then
echo "不带参数表示启动所有服务"
echo "-s 后面必须跟参数,表示启动指定服务"
echo "-r 表示重启所有服务,后面跟参数表示重启指定服务"
echo "-e 表示停止所有服务,后面跟服务名表示停止指定服务"
else
echo "参数错误:$param1, 可以输入 '--help' 查询参数"
fi
fi