单个脚本执行单个服务
sh
#!/bin/bash
NAME="java-demo.jar"
echo $NAME
ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "---------------"
for id in $ID
do
sudo kill -9 $id
echo "killed $id"
done
echo "---------------"
nohup java -jar /root/apps/java-demo.jar \
--elk.enable=false \
--elk.kafka.topic=kedi-logback \
--elk.kafka.urls=127.0.0.1:8881 \
--spring.profiles.active=prod \
--spring.cloud.consul.host=127.0.0.1 \
--spring.cloud.consul.port=8882 \
--spring.cloud.nacos.config.server-addr=127.0.0.1:8883 \
--spring.cloud.nacos.config.namespace=demo-prod \
--spring.cloud.nacos.username=demo-dev \
--spring.cloud.nacos.password=demo_passwd \
>> demo-java.log 2>&1 &
将上述脚本保存为demo-java.sh文件,并加上可执行权限,chmod +x demo-java.sh
重启脚本,方便一次性重启多个服务
sh
#!/bin/bash
# 定义所有应用的启动脚本路径
declare -A apps
apps=(
["demo"]="/root/app/run-demo.sh"
["log"]="/root/app/run-log.sh"
)
# 打印帮助信息
function print_help() {
echo "Usage: $0 [all|app_name]"
echo " all - 重启所有应用"
echo " app_name - 重启指定的应用"
echo " list - 打印支持的应用名称"
}
# 打印支持的应用名称
function list_apps() {
echo "支持的应用名称如下:"
for app_name in "${!apps[@]}"; do
echo " - $app_name"
done
}
# 重启单个应用
function restart_app() {
local app_name=$1
local script_path=${apps[$app_name]}
if [ -z "$script_path" ]; then
echo "应用 $app_name 不存在!"
return 1
fi
# 如果是 calc 应用,延迟 40 秒后再启动
if [ "$app_name" == "calc" ]; then
echo "检测到有依赖应用 $app_name ,等待 40 秒后再启动..."
sleep 40 # 延迟 40 秒
fi
echo "正在重启应用 $app_name ..."
# 重启应用(假设启动脚本支持 stop 参数)
$script_path
sleep 2
# 启动应用
# $script_path start
echo "应用 $app_name 重启完成!"
}
# 重启所有应用
function restart_all() {
for app_name in "${!apps[@]}"; do
restart_app $app_name
done
}
# 主逻辑
if [ $# -eq 0 ]; then
print_help
exit 1
fi
if [ "$1" == "all" ]; then
restart_all
elif [ "$1" == "list" ]; then
list_apps
else
restart_app $1
fi