start.sh 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/bin/bash
  2. port=$1
  3. echo "port: $port"
  4. PATH_APP=$(pwd)
  5. function get_port() {
  6. APP_PORT=$port
  7. }
  8. function get_ok() {
  9. APP_OK=$(curl --silent -m 3 -k https://127.0.0.1:$APP_PORT/ok)
  10. }
  11. function get_pid() {
  12. APP_PID=$(ps -ef | grep "python $PATH_APP/coze_bot_api.py $port" | grep -v grep | awk '{print $2}')
  13. }
  14. function kill_app() {
  15. if [ -n $APP_PID ]; then
  16. for v in $APP_PID; do
  17. echo $(date +%F%n%T) "开始杀死已有进程: $v"
  18. kill -9 $v
  19. done
  20. fi
  21. }
  22. function start_app() {
  23. echo $(date +%F%n%T) "开始启动coze_bot_api..."
  24. PYTHONIOENCODING=utf-8 nohup python $PATH_APP/coze_bot_api.py $port > $PATH_APP/nohup.out 2>&1 &
  25. sleep 5
  26. ((RETRY_COUNT++))
  27. echo $(tail -50 $PATH_APP/nohup.out)
  28. echo "启动完成..."
  29. echo "日志请查看 $PATH_APP/nohup.out"
  30. }
  31. function loop_detect_ok() {
  32. # 重试计数,防止pod一直显示成功
  33. RETRY_COUNT=0
  34. get_pid
  35. kill_app
  36. start_app
  37. while [ 1 ]; do
  38. if [ $RETRY_COUNT -gt 21 ]; then
  39. echo $(date +%F%n%T) "超出重启app次数限制,退出系统..."
  40. echo $(date +%F%n%T) "超出重启app次数限制,退出系统..." >> $PATH_APP/event.log
  41. exit
  42. fi
  43. # 进程不存在
  44. get_pid
  45. if [ -z $APP_PID ]; then
  46. echo $(date +%F%n%T) "进程不存在,第 $RETRY_COUNT 次重启app"
  47. echo $(date +%F%n%T) "进程不存在,第 $RETRY_COUNT 次重启app" >> $PATH_APP/event.log
  48. kill_app
  49. start_app
  50. continue
  51. fi
  52. # 端口不存在
  53. get_port
  54. if [ -z $APP_PORT ]; then
  55. echo $(date +%F%n%T) "端口不存在,第 $RETRY_COUNT 次重启app"
  56. echo $(date +%F%n%T) "端口不存在,第 $RETRY_COUNT 次重启app" >> $PATH_APP/event.log
  57. kill_app
  58. start_app
  59. continue
  60. fi
  61. # 心跳不存在
  62. get_ok
  63. if [ "$APP_OK"x != '"ok"'x ]; then
  64. echo $(date +%F%n%T) "心跳不存在,第 $RETRY_COUNT 次重启app"
  65. echo $(date +%F%n%T) "心跳不存在,第 $RETRY_COUNT 次重启app" >> $PATH_APP/event.log
  66. kill_app
  67. start_app
  68. continue
  69. fi
  70. RETRY_COUNT=1
  71. #echo "" > $PATH_APP/nohup.out
  72. sleep 5
  73. done
  74. }
  75. #get_pid
  76. #kill_app
  77. #start_app
  78. loop_detect_ok &