stop.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/bash
  2. ##############################################
  3. # Snapshot 后端停止服务脚本
  4. # 适用于 Linux 环境
  5. ##############################################
  6. # 颜色输出
  7. RED='\033[0;31m'
  8. GREEN='\033[0;32m'
  9. YELLOW='\033[1;33m'
  10. NC='\033[0m' # No Color
  11. print_info() {
  12. echo -e "${GREEN}[INFO]${NC} $1"
  13. }
  14. print_error() {
  15. echo -e "${RED}[ERROR]${NC} $1"
  16. }
  17. print_warning() {
  18. echo -e "${YELLOW}[WARNING]${NC} $1"
  19. }
  20. echo "============================================"
  21. echo "Snapshot 后端停止服务"
  22. echo "============================================"
  23. echo
  24. # 查找运行中的Snapshot进程
  25. PIDS=$(pgrep -f "snapshot-backend-1.0.0.jar")
  26. if [ -z "$PIDS" ]; then
  27. print_warning "未找到运行中的Snapshot后端服务"
  28. exit 0
  29. fi
  30. print_info "找到运行中的服务进程:"
  31. echo "$PIDS"
  32. echo
  33. # 尝试优雅停止
  34. print_info "正在停止服务..."
  35. for PID in $PIDS; do
  36. if ps -p $PID > /dev/null; then
  37. kill $PID
  38. print_info "已发送停止信号到进程: $PID"
  39. fi
  40. done
  41. # 等待进程结束
  42. sleep 3
  43. # 检查是否还有进程运行
  44. REMAINING_PIDS=$(pgrep -f "snapshot-backend-1.0.0.jar")
  45. if [ -n "$REMAINING_PIDS" ]; then
  46. print_warning "服务未响应,强制停止..."
  47. for PID in $REMAINING_PIDS; do
  48. if ps -p $PID > /dev/null; then
  49. kill -9 $PID
  50. print_info "已强制停止进程: $PID"
  51. fi
  52. done
  53. sleep 1
  54. fi
  55. # 最终检查
  56. if pgrep -f "snapshot-backend-1.0.0.jar" > /dev/null; then
  57. print_error "停止失败,请手动检查"
  58. exit 1
  59. else
  60. print_info "服务已成功停止"
  61. fi
  62. echo
  63. print_info "Snapshot 后端服务已停止"