kill_all_processes.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/bash
  2. # 强力清理 knowledge-agent 相关进程
  3. echo "🔍 查找 knowledge-agent 相关进程..."
  4. # 查找所有可能的进程
  5. PROCESSES=$(ps aux | grep -E "(python.*agent\.py|uvicorn.*agent|knowledge-agent|agent\.py|multiprocessing\.spawn)" | grep -v grep | awk '{print $2}')
  6. if [ -z "$PROCESSES" ]; then
  7. echo "✅ 没有找到 knowledge-agent 相关进程"
  8. else
  9. echo "📋 找到以下进程:"
  10. ps aux | grep -E "(python.*agent\.py|uvicorn.*agent|knowledge-agent|agent\.py|multiprocessing\.spawn)" | grep -v grep
  11. echo ""
  12. echo "🛑 开始强制终止进程..."
  13. # 强制终止所有找到的进程
  14. for pid in $PROCESSES; do
  15. echo "强制终止进程 $pid..."
  16. kill -9 $pid 2>/dev/null
  17. done
  18. # 等待1秒
  19. sleep 1
  20. # 再次检查
  21. REMAINING=$(ps aux | grep -E "(python.*agent\.py|uvicorn.*agent|knowledge-agent|agent\.py|multiprocessing\.spawn)" | grep -v grep | awk '{print $2}')
  22. if [ ! -z "$REMAINING" ]; then
  23. echo "⚠️ 仍有进程未终止,再次强制终止..."
  24. for pid in $REMAINING; do
  25. echo "再次强制终止进程 $pid..."
  26. kill -9 $pid 2>/dev/null
  27. done
  28. fi
  29. echo "✅ 进程清理完成"
  30. fi
  31. # 清理PID文件
  32. if [ -f "/tmp/knowledge-agent.pid" ]; then
  33. echo "🗑️ 清理PID文件..."
  34. rm -f /tmp/knowledge-agent.pid
  35. fi
  36. # 检查端口占用
  37. echo "🔍 检查端口8080占用情况..."
  38. PORT_PROCESS=$(lsof -ti:8080 2>/dev/null)
  39. if [ ! -z "$PORT_PROCESS" ]; then
  40. echo "⚠️ 端口8080仍被占用,进程ID: $PORT_PROCESS"
  41. echo "强制终止占用端口的进程..."
  42. kill -9 $PORT_PROCESS 2>/dev/null
  43. echo "✅ 端口已释放"
  44. else
  45. echo "✅ 端口8080已释放"
  46. fi
  47. echo "🏁 清理完成"