golang: 启动应用的bash脚本

一,代码:

#!/bin/bash
export BUILD_ID=dontKillme
#所在目录
WORKSPACE=/data/gyweb
#二进制文件名
BIN_NAME=industry

USER=`whoami`
echo "当前用户:$USER"

echo "要启动的程序:$BIN_NAME"

#判断进程是否存在,如果存在,则需要先kill再启动

PID=`ps -ef | grep ${BIN_NAME} | grep -v grep | grep -v startup | awk '{print \$2}'`
# echo $PID;
if [ ! "$PID" ] ;then 
     echo "不存在进程"
else
    echo "存在进程,PID:$PID,开始kill进程"


    while [ "$PID" ]
    do
        kill -9 $PID
        #sleep
        sleep 0.05s
        # get pid
        PID=`ps -ef | grep ${BIN_NAME} | grep -v grep | grep -v startup | awk '{print \$2}'`
        # echo "kill后进程PID:$PID"
        if [ ! "$PID" ] ;then 
            echo "kill成功,不存在进程"
        else
            echo "kill后进程未完全退出,PID:$PID"
        fi
    done

fi


echo "开始启动服务"
cd ${WORKSPACE}
PWD=`pwd`
echo "当前目录:$PWD"
nohup ${WORKSPACE}/${BIN_NAME} >> ${WORKSPACE}/logs/console.log 2>&1 &
# 检查启动是否成功
PID2=`ps -ef | grep ${BIN_NAME} | grep -v grep | grep -v startup | awk '{print \$2}'`
# echo $PID2;
if [ ! "$PID2" ] ;then
     echo "不存在进程,启动失败!"
else
    echo "存在进程,PID:$PID2,启动成功!"
fi

 

二,测试效果:

$ ./startbin.sh
当前用户:webop
要启动的程序:industry
存在进程,PID:1702,开始kill进程
kill成功,不存在进程
开始启动服务
当前目录:/data/gyweb
存在进程,PID:1734,启动成功!         

 

posted @ 2025-02-15 11:09  刘宏缔的架构森林  阅读(24)  评论(0)    收藏  举报