kill_processes.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. """查找并杀掉占用端口或一直运行的 Python 进程"""
  2. import subprocess
  3. import sys
  4. def find_processes_by_port(port):
  5. """查找占用指定端口的进程"""
  6. try:
  7. result = subprocess.run(
  8. ["netstat", "-ano"],
  9. capture_output=True,
  10. text=True,
  11. shell=True
  12. )
  13. pids = []
  14. for line in result.stdout.split('\n'):
  15. if f':{port}' in line and 'LISTENING' in line:
  16. parts = line.split()
  17. if parts:
  18. pid = parts[-1]
  19. if pid.isdigit():
  20. pids.append(int(pid))
  21. return pids
  22. except Exception as e:
  23. print(f"Error finding processes: {e}")
  24. return []
  25. def kill_process(pid):
  26. """杀掉指定 PID 的进程"""
  27. try:
  28. subprocess.run(["taskkill", "/F", "/PID", str(pid)], check=True)
  29. print(f"✓ Killed process {pid}")
  30. return True
  31. except Exception as e:
  32. print(f"✗ Failed to kill {pid}: {e}")
  33. return False
  34. if __name__ == "__main__":
  35. print("查找占用 8000 端口的进程...")
  36. pids = find_processes_by_port(8000)
  37. if pids:
  38. print(f"找到 {len(pids)} 个进程: {pids}")
  39. for pid in pids:
  40. kill_process(pid)
  41. else:
  42. print("没有找到占用 8000 端口的进程")
  43. print("\n查找占用 8001 端口的进程...")
  44. pids = find_processes_by_port(8001)
  45. if pids:
  46. print(f"找到 {len(pids)} 个进程: {pids}")
  47. for pid in pids:
  48. kill_process(pid)
  49. else:
  50. print("没有找到占用 8001 端口的进程")