单个脚本执行单个服务
/* by yours.tools - online tools website : yours.tools/zh/imagetoemf.html */ #!/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
重启脚本,方便一次性重启多个服务
/* by yours.tools - online tools website : yours.tools/zh/imagetoemf.html */ #!/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