1. #!/bin/bash
  2. #Created on Jul 24
  3. #@author yunweibu@foresee.com
  4. #Version 1.1
  5. #刷新系統環境變量
  6. source ~/.bash_profile
  7. echo "Sping Cloud ops script.FORESEE"
  8. #封裝定義顏色輸出
  9. function green() {
  10. echo -e "\033[32m$1 \033[0m"
  11. }
  12. function red() {
  13. echo -e "\033[31m$1 \033[0m"
  14. }
  15. #設置目錄路徑變量
  16. DISK_DIR=/data/logs
  17. #日志路徑
  18. BIN_DIR=$(cd `dirname $0`; pwd)
  19. #bin目錄的路徑
  20. DEPLOY_DIR=${BIN_DIR%/*}
  21. #安裝目錄
  22. cd $DEPLOY_DIR
  23. SERVER_NAME=$(pwd | sed 's,^\(.*/\)\?\([^/]*\),\2,')
  24. #去服務名
  25. CONF_DIR=${DEPLOY_DIR}/conf
  26. #conf目錄
  27. LIB_DIR=${DEPLOY_DIR}/lib
  28. #lib目錄
  29. LOGS_DIR=${DEPLOY_DIR}/logs
  30. #日志目錄
  31. LOGS_ROOTPATH=${DISK_DIR}/${SERVER_NAME}
  32. #微服務日志傳參目錄
  33. #設置JAR包變量
  34. JAR_NAME="`ls ${LIB_DIR} | grep .jar | sort -nr | head -1`"
  35. #jar包名稱
  36. RUN_JAR_PATH=${LIB_DIR}/${JAR_NAME}
  37. #jar包絕對路徑名稱
  38. PIDS=`ps aux |grep "$JAR_NAME"|grep -v grep| awk '{print $2}'`
  39. #進程PIDS
  40. # set env
  41. source $DEPLOY_DIR/../setEnv.sh
  42. #設置微服務環境變量
  43. #設置九維監控變量
  44. jw_IP='192.168.200.150'
  45. jw_MONITOR_PATH=${DEPLOY_DIR}/nnops/pinpoint-bootstrap-1.6.0.jar
  46. jw_KEY=RC0cx2CxItzEZN4x5t8d80
  47. jw_SECRET=eiPptF_GInbrrGRixGgh_0
  48. jw_ProjectID=23DC1AD4FFFFFF96328C1C62F7139853
  49. jw_SENTRYDSN=http://${jw_KEY}:${jw_SECRET}@${jw_IP}/applog/${jw_ProjectID}?options
  50. #輸出打印目錄
  51. # echo desc
  52. echo "################################################################################"
  53. java -version
  54. echo "JAVA_HOME=$JAVA_HOME"
  55. echo "DEPLOY_DIR=$DEPLOY_DIR"
  56. echo "RUN_JAR_PATH=$RUN_JAR_PATH"
  57. echo "################################################################################"
  58. if [ -n "$PIDS" ]; then
  59. red "ERROR: The [$DEPLOY_DIR:$SERVER_NAME] already started! PID is $PIDS!"
  60. exit 1
  61. fi
  62. #判斷微服務是否已經開啟
  63. # init logs dir
  64. if [ ! -d $LOGS_DIR ]; then
  65. mkdir $LOGS_DIR
  66. fi
  67. #判斷日志目錄是否存在
  68. if [ ! -d $LOGS_ROOTPATH ]; then
  69. mkdir -p $LOGS_ROOTPATH
  70. fi
  71. #判斷目錄存在
  72. JAVA_OPTS="${ENV_OPTS} -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8"
  73. #java啟動參數
  74. JAVA_DEBUG_OPTS=""
  75. if [ "$1" = "debug" ]; then
  76. JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
  77. fi
  78. JAVA_JMX_OPTS=""
  79. if [ "$1" = "jmx" ]; then
  80. JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
  81. fi
  82. JAVA_MEM_OPTS=""
  83. BITS=`java -version 2>&1 | grep -i 64-bit`
  84. if [ -n "$BITS" ]; then
  85. JAVA_MEM_OPTS=" -server -Xms256m -Xmx256m -Xmn128m -XX:MaxMetaspaceSize=256m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -Dspring.application.name=${SERVER_NAME} "
  86. else
  87. JAVA_MEM_OPTS=" -client -Xms128m -Xmx128m -XX:MaxMetaspaceSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "
  88. fi
  89. #判斷系統java的位數
  90. green "Starting the $SERVER_NAME ...\c"
  91. nohup java -javaagent:$jw_MONITOR_PATH -Dlog.rootPath=$LOGS_ROOTPATH -Dsentrydsn=$jw_SENTRYDSN $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -jar $RUN_JAR_PATH > /dev/null 2>&1 &
  92. #啟動命令 nohup
  93. green "OK! \c"
  94. PIDS=`ps -ef | grep java | grep "$LIB_DIR" | awk '{print $2}'`
  95. green "PID: $PIDS"
  96. green "LOGS_ROOTPATH: $LOGS_ROOTPATH/logs/${SERVER_NAME}.log"
  97. #輸出啟動信息