stop.sh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/bin/sh
  2. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  3. APP_HOME="$(dirname "$SCRIPT_DIR")"
  4. . "$APP_HOME/conf/setenv.sh"
  5. PID_SUFFIX=".pid"
  6. stop_app() {
  7. APP_NAME=$1
  8. PID_FILE="$BIN_DIR/conf/$APP_NAME$PID_SUFFIX"
  9. if [ ! -f "$PID_FILE" ]; then
  10. echo "[WARN] $APP_NAME is not running (no PID file)"
  11. return
  12. fi
  13. PID=$(cat "$PID_FILE")
  14. if ! ps -p "$PID" > /dev/null 2>&1; then
  15. echo "[WARN] $APP_NAME: PID file exists but no process. Removing stale file."
  16. rm -f "$PID_FILE"
  17. return
  18. fi
  19. echo "[INFO] $APP_NAME: Sending SIGTERM to PID $PID"
  20. kill -15 "$PID"
  21. for i in $(seq 0 12); do
  22. sleep 1
  23. if ! ps -p "$PID" > /dev/null 2>&1; then
  24. echo "[INFO] $APP_NAME stopped gracefully."
  25. rm -f "$PID_FILE"
  26. return
  27. fi
  28. echo "[INFO] $APP_NAME stopping..."
  29. done
  30. echo "[INFO] $APP_NAME: Force killing PID $PID"
  31. kill -9 "$PID"
  32. rm -f "$PID_FILE"
  33. echo "[INFO] Cleanup complete."
  34. }
  35. case "$1" in
  36. rota-local-client | rota-local-server | moct-local-client)
  37. stop_app "$1"
  38. ;;
  39. all)
  40. for APP in $APP_LIST; do
  41. stop_app "$APP"
  42. done
  43. ;;
  44. *)
  45. echo "Usage: $0 {rota-local-client|rota-local-server|moct-local-client|all}"
  46. exit 1
  47. ;;
  48. esac
  49. echo ""
  50. echo "[INFO] Remaining Java processes:"
  51. ps -eaf | grep java | grep jar | grep rota-local- | grep -v grep