stop_services.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/bin/bash
  2. # 确保以 root 权限运行,以便终止所有进程
  3. if [ "$EUID" -ne 0 ]; then
  4. echo "错误:请使用 sudo 权限运行此脚本。 (例如:sudo ./stop_services.sh)"
  5. exit 1
  6. fi
  7. echo "开始执行停止脚本..."
  8. # 1. 停止 'videoSurveillance' 进程
  9. # 使用 pkill -f 匹配包含 "videoSurveillance" 的完整进程名
  10. echo "---"
  11. echo "1. 正在尝试停止 'videoSurveillance' 进程..."
  12. if pkill -f "videoSurveillance"; then
  13. echo " 已发送终止信号到 'videoSurveillance'。"
  14. else
  15. echo " 未找到 'videoSurveillance' 进程。"
  16. fi
  17. # 2. 停止占用 5060 端口的进程
  18. echo "---"
  19. echo "2. 正在尝试停止占用 5060 端口的进程..."
  20. # lsof -t -i:5060 ( -t 仅输出 PID, -i:5060 查找使用该端口的)
  21. PID_5060=$(lsof -t -i:5060)
  22. if [ -n "$PID_5060" ]; then
  23. echo " 找到占用 5060 端口的进程 PID: $PID_5060。正在强制终止..."
  24. # -9 是 SIGKILL 信号 (强制终止)
  25. kill -9 $PID_5060
  26. echo " 已终止 PID: $PID_5060。"
  27. else
  28. echo " 未找到占用 5060 端口的进程。"
  29. fi
  30. # 3. 停止占用 10001 端口的 'scp-config' 进程
  31. echo "---"
  32. echo "3. 正在尝试停止占用 10001 端口的 'scp-config' 进程..."
  33. FOUND_10001=false
  34. # 查找所有使用 10001 端口的 PID
  35. PIDS_10001=$(lsof -t -i:10001)
  36. if [ -n "$PIDS_10001" ]; then
  37. for pid in $PIDS_10001; do
  38. # 获取该 PID 的完整命令行
  39. PNAME=$(ps -p $pid -o args=)
  40. # 检查命令行是否包含 "scp-config"
  41. if echo "$PNAME" | grep -q "scp-config"; then
  42. echo " 找到匹配进程: PID $pid (名称 '$PNAME') 正在使用端口 10001。"
  43. kill -9 $pid
  44. echo " 已终止 PID: $pid。"
  45. FOUND_10001=true
  46. fi
  47. done
  48. fi
  49. if [ "$FOUND_10001" = false ]; then
  50. echo " 未找到名为 'scp-config' 且占用 10001 端口的进程。"
  51. fi
  52. echo "---"
  53. echo "脚本执行完毕。"