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 "33[32m$1 33[0m"
  11. }
  12. function red() {
  13. echo -e "33[31m$1 33[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. #输出启动信息