#!/bin/bash set -euo pipefail STANDARD_HOME_DIR="${STANDARD_HOME_DIR:?STANDARD_HOME_DIR is required}" STANDARD_RUN_USER="${STANDARD_RUN_USER:?STANDARD_RUN_USER is required}" STOP_TIMEOUT_SECONDS="${STOP_TIMEOUT_SECONDS:-30}" wait_until_stopped() { local pattern="$1" local label="$2" local deadline=$((SECONDS + STOP_TIMEOUT_SECONDS)) while pgrep -f "${pattern}" >/dev/null 2>&1; do if (( SECONDS >= deadline )); then echo "[WARN] ${label} still running after ${STOP_TIMEOUT_SECONDS}s, force killing" pkill -9 -f "${pattern}" >/dev/null 2>&1 || true break fi sleep 1 done } stop_by_pattern() { local pattern="$1" local label="$2" if pgrep -f "${pattern}" >/dev/null 2>&1; then echo "[INFO] stopping ${label}: ${pattern}" pkill -f "${pattern}" >/dev/null 2>&1 || true wait_until_stopped "${pattern}" "${label}" fi } if [ -x "${STANDARD_HOME_DIR}/cmsp/stop_cmsp.sh" ]; then su - "${STANDARD_RUN_USER}" -s /bin/bash "${STANDARD_HOME_DIR}/cmsp/stop_cmsp.sh" || true fi stop_by_pattern "${STANDARD_HOME_DIR}/cmsp" "CMEP-CMSP path" stop_by_pattern "CMEP-CMSP" "CMEP-CMSP jar" if [ -x "${STANDARD_HOME_DIR}/cmtp/stop_cmtp.sh" ]; then su - "${STANDARD_RUN_USER}" -s /bin/bash "${STANDARD_HOME_DIR}/cmtp/stop_cmtp.sh" || true fi stop_by_pattern "${STANDARD_HOME_DIR}/cmtp" "CMEP-CMTP path" stop_by_pattern "CMEP-CMTP" "CMEP-CMTP jar"