stop.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/usr/bin/env bash
  2. #kill `cat gate_server.pid*`
  3. #kill `cat game_server.pid*`
  4. #kill `cat db_server.pid*`
  5. #!/bin/sh
  6. #date=$(date +%Y%m%d-%H:%M:%S)
  7. #echo "time=$date"
  8. #mkdir -p /redis-backup
  9. #redis-cli save
  10. #cp /www/server/redis/dump.rdb /redis-backup/dump-$date.rdb
  11. quit=1
  12. index=0
  13. function iterator_dir() {
  14. local dir="$1"
  15. for element in "$dir"/*; do
  16. # 检查文件名是否包含 "pid"(不区分大小写)
  17. if [[ "$element" =~ [pP][iI][dD] ]]; then
  18. echo "Found PID file: $element"
  19. # 读取 PID,并去除空格/换行符
  20. pidValue=$(cat "$element" 2>/dev/null | tr -d '[:space:]')
  21. # 检查是否是有效数字
  22. if [[ ! "$pidValue" =~ ^[0-9]+$ ]]; then
  23. echo "Error: $element does not contain a valid PID (got: '$pidValue')"
  24. continue
  25. fi
  26. # 检查进程是否存在
  27. if ps -p "$pidValue" >/dev/null 2>&1; then
  28. echo "Killing process $pidValue..."
  29. # 先尝试 SIGTERM(优雅终止)
  30. kill "$pidValue" 2>/dev/null
  31. sleep 1 # 等待进程处理终止信号
  32. # 检查是否仍然存活,如果是,则强制 SIGKILL
  33. if ps -p "$pidValue" >/dev/null 2>&1; then
  34. echo "Process $pidValue still running, sending SIGKILL..."
  35. kill -9 "$pidValue" 2>/dev/null
  36. fi
  37. ((index++))
  38. else
  39. echo "Process $pidValue does not exist."
  40. fi
  41. else
  42. quit=0
  43. fi
  44. done
  45. }
  46. iterator_dir .