小张开发日记01

66 阅读1分钟

记录一下做简易自动化部署时候的shell。

#!/bin/bash
#author:victor zhang
#file: restart-all.sh
#comment: axe infrastructure services restart script.
#histroy:
#	2022.11.11 created by victor zhang

 
##初始化参数
#服务名
SERVICE_NAME=(

)

# first stop all services
echo ""
echo "---------停止程序 开始执行 ...-----------"
for((i=0;i<${#SERVICE_NAME[@]};i++))
do
    num=$((i+1))
    service_name=${SERVICE_NAME[i]}
    service_pid=$(ps -ef | grep "$service_name" | grep -v grep | grep -v bash | awk '{print $2}')
    if [ "$service_pid" == "" ]; then
        echo "---	服务$num: 【$service_name】进程不存在或已停止运行!!!"
    else
        kill -9 "$service_pid"
        echo "---	服务$num: 【$service_name】停止成功。"
    fi
    sleep 1
done
echo "---------停止程序 执行完毕 !!!-----------"
echo ""

# then start all services

echo ""
echo "---------启动程序 开始执行 ...-----------"
for((i=0;i<${#SERVICE_NAME[@]};i++))
do
    num=$((i+1))
    service_name=${SERVICE_NAME[i]}
    service_package="${SERVICE_NAME[i]}.jar"
    echo "---服务$num:【$service_name】开始启动 ..."
    echo "---服务安装程序为: $service_package"

    service_pid=$(ps -ef | grep "$service_name" | grep -v grep | grep -v bash | awk '{print $2}')
    if [ -n "$service_pid" ];then
        echo "--- $service_name进程存在,无需启动。当前进程为:$service_pid"
    else
        #启动服务
        echo "--- $service_name进程不存在,启动服务 ..."

        #运行java服务并在后台执行
        nohup java -jar -Xmx512m -Xms512m "$service_package" &
        

        #判断服务启动成功
        service_pid_new=$(ps -ef | grep "$service_name" | grep -v grep | grep -v bash | awk '{print $2}')
        until [ -n "$service_pid_new" ]
        do
            service_pid_new=$(ps -ef | grep "$service_name" | grep -v grep | grep -v bash | awk '{print $2}')
        done
        echo "--- $service_name 启动完毕!!!当前进程为:$service_pid_new"
    fi
    sleep 2
done
echo "---------启动程序 执行完毕 !!!-----------"
echo ""