| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #!/bin/bash
- if [ -z "${BASE_DIR}" ]; then
- BASE_DIR=$(
- cd "$(dirname "$(realpath "$0")")/.." || exit
- pwd
- )
- fi
- . "${BASE_DIR}"/conf/env.sh
- . "${BASE_DIR}"/bin/common/functions.sh
- BANNED_USER="root"
- USER="$(whoami)"
- CURRENT_HOST=$(hostname -s)
- PROJECT_NAME=$(basename "${BASE_DIR}")
- # 从 conf/workers.ini 加载 RELEASE_HOST + DATAX_WORKERS + 权重 + 加权随机池
- declare -A DATAX_WORKERS_WEIGHTS
- DATAX_WORKERS=()
- _section=""
- while IFS= read -r _line; do
- _line="${_line%%[;#]*}"
- _line="$(echo -n "${_line}" | xargs)"
- [[ -z "${_line}" ]] && continue
- if [[ "${_line}" =~ ^\[(.+)\]$ ]]; then
- _section="${BASH_REMATCH[1]}"
- continue
- fi
- case "${_section}" in
- release)
- if [[ "${_line}" =~ ^host[[:space:]]*=[[:space:]]*(.+)$ ]]; then
- RELEASE_HOST="${BASH_REMATCH[1]}"
- fi
- ;;
- weights)
- if [[ "${_line}" =~ ^([^[:space:]=]+)[[:space:]]*=[[:space:]]*([0-9]+)$ ]]; then
- DATAX_WORKERS+=("${BASH_REMATCH[1]}")
- DATAX_WORKERS_WEIGHTS["${BASH_REMATCH[1]}"]="${BASH_REMATCH[2]}"
- fi
- ;;
- esac
- done < "${BASE_DIR}/conf/workers.ini"
- DATAX_WORKERS_QUEUE=()
- for _key in "${!DATAX_WORKERS_WEIGHTS[@]}"; do
- for ((_i = 0; _i < DATAX_WORKERS_WEIGHTS[$_key]; _i++)); do
- DATAX_WORKERS_QUEUE+=("${_key}")
- done
- done
- unset _section _line _key _i
- if [ "${USER}" == "${BANNED_USER}" ]; then
- pretty_print "${NORM_RED}Project ${NORM_GRN}${PROJECT_NAME}${NORM_RED} is running by banned user ${NORM_GRN}${BANNED_USER}${NORM_RED}, exit with error code ${NORM_GRN}18"
- exit 18
- elif [ "${USER}" == "${RELEASE_USER}" ]; then
- IS_RUN_BY_RELEASE_USER="1"
- pretty_print "${NORM_MGT}Project ${NORM_GRN}${PROJECT_NAME}${NORM_MGT} is running by release user ${NORM_GRN}${RELEASE_USER}"
- else
- IS_RUN_BY_NORMAL_USER="1"
- . "${BASE_DIR}"/bin/common/print-constants.sh
- if [ "${CURRENT_HOST}" == "${RELEASE_HOST}" ] && [ -n "${IS_RUN_BY_NORMAL_USER}" ]; then
- cow_says
- fi
- pretty_print "${NORM_MGT}Project ${NORM_GRN}${PROJECT_NAME}${NORM_MGT} is running by normal user ${NORM_GRN}${USER}"
- fi
- if [[ "${BASE_DIR}" =~ "${RELEASE_ROOT_DIR}/${PROJECT_NAME}/"* ]]; then
- IS_RUN_IN_RELEASE_DIR="1"
- pretty_print "${NORM_MGT}Project ${NORM_GRN}${PROJECT_NAME}${NORM_MGT} is running in release dir ${NORM_GRN}${RELEASE_ROOT_DIR}/${PROJECT_NAME}"
- else
- pretty_print "${NORM_MGT}Project ${NORM_GRN}${PROJECT_NAME}${NORM_MGT} is running in normal user dir ${NORM_GRN}${BASE_DIR}"
- fi
- export CURRENT_HOST
- export DATAX_WORKERS
- export BA_LITTLE_CUTE
- export DCP_LITTLE_CUTE
- export ETL_LITTLE_CUTE
- export SKB_LITTLE_CUTE
- export REALTIME_LITTLE_CUTE
- export IS_RUN_IN_RELEASE_DIR
- export IS_RUN_BY_RELEASE_USER
- echo -en "${NORM_GRN}"
- echo -en "${DO_RESET}"
|