Shell脚本 服务一键启动与终止脚本
configServerAddr=“127.0.0.0:8088"
#nameSpace
registerNamespace=“lzh_test”
arr=(
“subject-starter"
“project-starter"
)
# 在 Bash 脚本中,getopts 是一个用于解析命令行参数的内置命令,而 $opt 是一个变量,用于存储 getopts 解析到的当前选项。
while getopts ":n:a:m:" opt
do
case $opt in
"a") configServerAddr=$OPTARG;;
"n") registerNamespace=$OPTARG ;;
"m") module=$OPTARG ;;
?) exit 1;;
esac
done
# ! -n 表示为空 -n判断是否为空 不为空返回true
if [ ! -n "$module" ];then
echo '将运行全部模块'
else
OLD_IFS="$IFS"
IFS=","
arr=($module)
IFS="$OLD_IFS"
fi
echo "配置中心地址:$configServerAddr"
echo "注册中心namespace:$registerNamespace"
# 2>&1 的作用是将标准错误(stderr)的输出重定向到与标准输出(stdout)相同的地方。这样做的目的是将所有的输出(包括标准输出和标准错误)都写入到同一个文件中,以便更容易进行日志记录和分析。
for var in ${arr[@]}
do
echo "启动模块:$var"
nohup java -Dfile.encoding=utf-8 -Xms512m -Xmx1024m -jar $var-hy-SNAPSHOT.jar --nacos.config.server-addr=$configServerAddr --nacos.config.namespace=$registerNamespace > $var.log 2>&1 &
echo $! > $var.pid
sleep 5
done
#停止脚本
arr=(
“subject-starter"
“project-starter"
)
while getopts ":m:" opt
do
case $opt in
"m") module=$OPTARG ;;
?) exit 1;;
esac
done
if [ ! -n "$module" ];then
echo '将停止全部模块'
else
OLD_IFS="$IFS"
IFS=","
arr=($module)
IFS="$OLD_IFS"
fi
for var in ${arr[@]}
do
kill -9 $(cat $var.pid)
done