cisd/scripts/standard-init/stop_standard_apps.sh
2026-05-11 15:24:39 +08:00

43 lines
1.4 KiB
Bash

#!/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"