monitor.sh 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/bin/bash
  2. # 伺服驱动选型工具服务器监控脚本
  3. SERVER_DIR="/home/admin/clawd/servo_sizer"
  4. PID_FILE="$SERVER_DIR/.server.pid"
  5. LOG_FILE="$SERVER_DIR/server.log"
  6. PORT=8080
  7. # 检查服务器是否在运行
  8. check_server() {
  9. if [ -f "$PID_FILE" ]; then
  10. PID=$(cat "$PID_FILE")
  11. if ps -p "$PID" > /dev/null; then
  12. # 检查端口是否在监听
  13. if lsof -i :"$PORT" > /dev/null 2>&1; then
  14. return 0
  15. fi
  16. fi
  17. fi
  18. return 1
  19. }
  20. # 启动服务器
  21. start_server() {
  22. echo "$(date): Starting servo sizer server..." >> "$LOG_FILE"
  23. cd "$SERVER_DIR"
  24. nohup ./start_optimized.sh > "$LOG_FILE" 2>&1 &
  25. sleep 3
  26. # 验证启动成功
  27. if check_server; then
  28. echo "$(date): Server started successfully" >> "$LOG_FILE"
  29. return 0
  30. else
  31. echo "$(date): Failed to start server" >> "$LOG_FILE"
  32. return 1
  33. fi
  34. }
  35. # 主监控循环
  36. while true; do
  37. if ! check_server; then
  38. echo "$(date): Server not running, attempting to restart..." >> "$LOG_FILE"
  39. start_server
  40. fi
  41. sleep 30
  42. done