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 @   刘宏缔的架构森林  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
历史上的今天:
2023-02-15 thinkphp:允许接口跨域访问(thinkphp v6.0.12LTS)
点击右上角即可分享
微信分享提示