init.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/bash
  2. if [ -z "${BASE_DIR}" ]; then
  3. BASE_DIR=$(
  4. cd "$(dirname "$(realpath "$0")")/.." || exit
  5. pwd
  6. )
  7. fi
  8. . "${BASE_DIR}"/conf/env.sh
  9. . "${BASE_DIR}"/bin/common/functions.sh
  10. BANNED_USER="root"
  11. USER="$(whoami)"
  12. CURRENT_HOST=$(hostname -s)
  13. RELEASE_HOST="m3"
  14. PROJECT_NAME=$(basename "${BASE_DIR}")
  15. DATAX_WORKERS=(
  16. m3 d1 d2 d3 d4
  17. )
  18. declare -A DATAX_WORKERS_WEIGHTS=(
  19. ["m3"]=1
  20. ["d1"]=2 ["d2"]=2 ["d3"]=3 ["d4"]=3
  21. )
  22. DATAX_WORKERS_QUEUE=()
  23. # 定义一个map存储机器的ip地址和分配的权重
  24. for key in ${!DATAX_WORKERS_WEIGHTS[*]}; do
  25. for ((i = 0; i < ${DATAX_WORKERS_WEIGHTS[$key]}; i++)); do
  26. DATAX_WORKERS_QUEUE+=("$key")
  27. done
  28. done
  29. if [ "${USER}" == "${BANNED_USER}" ]; then
  30. 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"
  31. exit 18
  32. elif [ "${USER}" == "${RELEASE_USER}" ]; then
  33. IS_RUN_BY_RELEASE_USER="1"
  34. pretty_print "${NORM_MGT}Project ${NORM_GRN}${PROJECT_NAME}${NORM_MGT} is running by release user ${NORM_GRN}${RELEASE_USER}"
  35. else
  36. IS_RUN_BY_NORMAL_USER="1"
  37. . "${BASE_DIR}"/bin/common/print-constants.sh
  38. if [ "${CURRENT_HOST}" == "${RELEASE_HOST}" ] && [ -n "${IS_RUN_BY_NORMAL_USER}" ]; then
  39. cow_says
  40. fi
  41. pretty_print "${NORM_MGT}Project ${NORM_GRN}${PROJECT_NAME}${NORM_MGT} is running by normal user ${NORM_GRN}${USER}"
  42. fi
  43. if [[ "${BASE_DIR}" =~ "${RELEASE_ROOT_DIR}/${PROJECT_NAME}/"* ]]; then
  44. IS_RUN_IN_RELEASE_DIR="1"
  45. pretty_print "${NORM_MGT}Project ${NORM_GRN}${PROJECT_NAME}${NORM_MGT} is running in release dir ${NORM_GRN}${RELEASE_ROOT_DIR}/${PROJECT_NAME}"
  46. else
  47. pretty_print "${NORM_MGT}Project ${NORM_GRN}${PROJECT_NAME}${NORM_MGT} is running in normal user dir ${NORM_GRN}${BASE_DIR}"
  48. fi
  49. export CURRENT_HOST
  50. export DATAX_WORKERS
  51. export BA_LITTLE_CUTE
  52. export DCP_LITTLE_CUTE
  53. export ETL_LITTLE_CUTE
  54. export SKB_LITTLE_CUTE
  55. export REALTIME_LITTLE_CUTE
  56. export IS_RUN_IN_RELEASE_DIR
  57. export IS_RUN_BY_RELEASE_USER
  58. echo -en "${NORM_GRN}"
  59. echo -en "${DO_RESET}"