start.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/bin/bash
  2. MODULE_NAME=""
  3. MODULE_DEFAULT_PREFIX="datax-"
  4. usage(){
  5. echo "Usage is [-m module will be started]"
  6. }
  7. function LOG(){
  8. currentTime=`date "+%Y-%m-%d %H:%M:%S.%3N"`
  9. echo -e "$currentTime [${1}] ($$) $2" | tee -a ${SHELL_LOG}
  10. }
  11. abs_path(){
  12. SOURCE="${BASH_SOURCE[0]}"
  13. while [ -h "${SOURCE}" ]; do
  14. DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
  15. SOURCE="$(readlink "${SOURCE}")"
  16. [[ ${SOURCE} != /* ]] && SOURCE="${DIR}/${SOURCE}"
  17. done
  18. echo "$( cd -P "$( dirname "${SOURCE}" )" && pwd )"
  19. }
  20. BIN=`abs_path`
  21. MODULE_DIR=${BIN}/../modules
  22. SHELL_LOG="${BIN}/console.out"
  23. interact_echo(){
  24. while [ 1 ]; do
  25. read -p "$1 (Y/N)" yn
  26. if [ "${yn}x" == "Yx" ] || [ "${yn}x" == "yx" ]; then
  27. return 0
  28. elif [ "${yn}x" == "Nx" ] || [ "${yn}x" == "nx" ]; then
  29. return 1
  30. else
  31. echo "Unknown choise: [$yn], please choose again."
  32. fi
  33. done
  34. }
  35. start_single_module(){
  36. LOG INFO "\033[1m ####### Begin To Start Module: [$1] ######\033[0m"
  37. if [ -f "${MODULE_DIR}/$1/bin/$1.sh" ]; then
  38. ${MODULE_DIR}/$1/bin/$1.sh start
  39. elif [[ $1 != ${MODULE_DEFAULT_PREFIX}* ]] && [ -f "${MODULE_DIR}/${MODULE_DEFAULT_PREFIX}$1/bin/${MODULE_DEFAULT_PREFIX}$1.sh" ]; then
  40. interact_echo "Do you mean [${MODULE_DEFAULT_PREFIX}$1] ?"
  41. if [ $? == 0 ]; then
  42. ${MODULE_DIR}/${MODULE_DEFAULT_PREFIX}$1/bin/${MODULE_DEFAULT_PREFIX}$1.sh start
  43. fi
  44. else
  45. LOG ERROR "Cannot find the startup script for module: [$1], please check your installation"
  46. exit 1
  47. fi
  48. }
  49. while [ 1 ]; do
  50. case ${!OPTIND} in
  51. -m|--modules)
  52. if [ -z $2 ]; then
  53. LOG ERROR "No module provided"
  54. exit 1
  55. fi
  56. MODULE_NAME=$2
  57. shift 2
  58. ;;
  59. "")
  60. break
  61. ;;
  62. *)
  63. usage
  64. exit 1
  65. ;;
  66. esac
  67. done
  68. if [ "x${MODULE_NAME}" == "x" ]; then
  69. usage
  70. exit 1
  71. fi
  72. start_single_module ${MODULE_NAME}
  73. exit $?