#!/bin/bash port=$1 echo "port: $port" PATH_APP=$(pwd) function get_port() { APP_PORT=$port } function get_ok() { APP_OK=$(curl --silent -m 3 -k https://127.0.0.1:$APP_PORT/ok) } function get_pid() { APP_PID=$(ps -ef | grep "python $PATH_APP/coze_znjd_api.py $port" | grep -v grep | awk '{print $2}') } function kill_app() { if [ -n $APP_PID ]; then for v in $APP_PID; do echo $(date +%F%n%T) "开始杀死已有进程: $v" kill -9 $v done fi } function start_app() { echo $(date +%F%n%T) "开始启动coze_znjd_api..." PYTHONIOENCODING=utf-8 nohup python $PATH_APP/coze_znjd_api.py $port > $PATH_APP/nohup_znjd.out 2>&1 & sleep 5 ((RETRY_COUNT++)) echo $(tail -50 $PATH_APP/nohup_znjd.out) echo "启动完成..." echo "日志请查看 $PATH_APP/nohup_znjd.out" } function loop_detect_ok() { # 重试计数,防止pod一直显示成功 RETRY_COUNT=0 get_pid kill_app start_app while [ 1 ]; do if [ $RETRY_COUNT -gt 21 ]; then echo $(date +%F%n%T) "超出重启app次数限制,退出系统..." echo $(date +%F%n%T) "超出重启app次数限制,退出系统..." >> $PATH_APP/event.log exit fi # 进程不存在 get_pid if [ -z $APP_PID ]; then echo $(date +%F%n%T) "进程不存在,第 $RETRY_COUNT 次重启app" echo $(date +%F%n%T) "进程不存在,第 $RETRY_COUNT 次重启app" >> $PATH_APP/event.log kill_app start_app continue fi # 端口不存在 get_port if [ -z $APP_PORT ]; then echo $(date +%F%n%T) "端口不存在,第 $RETRY_COUNT 次重启app" echo $(date +%F%n%T) "端口不存在,第 $RETRY_COUNT 次重启app" >> $PATH_APP/event.log kill_app start_app continue fi # 心跳不存在 get_ok if [ "$APP_OK"x != '"ok"'x ]; then echo $(date +%F%n%T) "心跳不存在,第 $RETRY_COUNT 次重启app" echo $(date +%F%n%T) "心跳不存在,第 $RETRY_COUNT 次重启app" >> $PATH_APP/event.log kill_app start_app continue fi RETRY_COUNT=1 #echo "" > $PATH_APP/nohup.out sleep 5 done } #get_pid #kill_app #start_app loop_detect_ok &