init.sh 2.3 KB

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