Ver código fonte

add: 自动重启脚本

yq 2 meses atrás
pai
commit
2ef5e96a95
1 arquivos alterados com 87 adições e 0 exclusões
  1. 87 0
      start_test_loop.sh

+ 87 - 0
start_test_loop.sh

@@ -0,0 +1,87 @@
+#!/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_bot_api_test.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_bot_api_test..."
+  PYTHONIOENCODING=utf-8 nohup python $PATH_APP/coze_bot_api_test.py $port > $PATH_APP/nohup.out 2>&1 &
+  sleep 5
+  ((RETRY_COUNT++))
+  echo $(tail -50 $PATH_APP/nohup.out)
+  echo "启动完成..."
+  echo "日志请查看 $PATH_APP/nohup.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 &