stop.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. # 查找npm/node相关进程
  25. PIDS=$(pgrep -f "vue-cli-service serve")
  26. if [ -z "$PIDS" ]; then
  27. PIDS=$(pgrep -f "npm run serve")
  28. fi
  29. if [ -z "$PIDS" ]; then
  30. PIDS=$(pgrep -f "node.*8081")
  31. fi
  32. if [ -z "$PIDS" ]; then
  33. print_warning "未找到运行中的Snapshot前端服务"
  34. exit 0
  35. fi
  36. print_info "找到运行中的服务进程:"
  37. echo "$PIDS"
  38. echo
  39. # 尝试优雅停止
  40. print_info "正在停止服务..."
  41. for PID in $PIDS; do
  42. if ps -p $PID > /dev/null; then
  43. kill $PID
  44. print_info "已发送停止信号到进程: $PID"
  45. fi
  46. done
  47. # 等待进程结束
  48. sleep 3
  49. # 检查是否还有进程运行
  50. REMAINING_PIDS=""
  51. if pgrep -f "vue-cli-service serve" > /dev/null; then
  52. REMAINING_PIDS=$(pgrep -f "vue-cli-service serve")
  53. elif pgrep -f "npm run serve" > /dev/null; then
  54. REMAINING_PIDS=$(pgrep -f "npm run serve")
  55. elif pgrep -f "node.*8081" > /dev/null; then
  56. REMAINING_PIDS=$(pgrep -f "node.*8081")
  57. fi
  58. if [ -n "$REMAINING_PIDS" ]; then
  59. print_warning "服务未响应,强制停止..."
  60. for PID in $REMAINING_PIDS; do
  61. if ps -p $PID > /dev/null; then
  62. kill -9 $PID
  63. print_info "已强制停止进程: $PID"
  64. fi
  65. done
  66. sleep 1
  67. fi
  68. # 最终检查
  69. FINAL_CHECK=""
  70. if pgrep -f "vue-cli-service serve" > /dev/null; then
  71. FINAL_CHECK="running"
  72. elif pgrep -f "npm run serve" > /dev/null; then
  73. FINAL_CHECK="running"
  74. elif pgrep -f "node.*8081" > /dev/null; then
  75. FINAL_CHECK="running"
  76. fi
  77. if [ "$FINAL_CHECK" = "running" ]; then
  78. print_error "停止失败,请手动检查"
  79. echo "尝试手动执行: pkill -f 'vue-cli-service serve'"
  80. exit 1
  81. else
  82. print_info "服务已成功停止"
  83. fi
  84. echo
  85. print_info "Snapshot 前端服务已停止"