startup.sh 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #!/bin/bash
  2. # 项目名称
  3. SERVER_NAME="${project.artifactId}"
  4. # jar名称
  5. JAR_NAME="${project.build.finalName}.jar"
  6. # 进入bin目录
  7. cd `dirname $0`
  8. # bin目录绝对路径
  9. BIN_DIR=`pwd`
  10. # 返回到上一级项目根目录路径
  11. cd ..
  12. # 打印项目根目录绝对路径
  13. # `pwd` 执行系统命令并获得结果
  14. DEPLOY_DIR=`pwd`
  15. # 外部配置文件绝对目录,如果是目录需要/结尾,也可以直接指定文件
  16. # 如果指定的是目录,spring则会读取目录中的所有配置文件
  17. CONF_DIR=$DEPLOY_DIR/config
  18. # 应用的端口号
  19. SERVER_PORT=1157
  20. PIDS=`ps -ef | grep java | grep "$CONF_DIR" | awk '{print $2}'`
  21. if [ "$1" = "status" ]; then
  22. if [ -n "$PIDS" ]; then
  23. echo "The $SERVER_NAME is running...!"
  24. echo "PID: $PIDS"
  25. exit 0
  26. else
  27. echo "The $SERVER_NAME is stopped"
  28. exit 0
  29. fi
  30. fi
  31. if [ -n "$PIDS" ]; then
  32. echo "ERROR: The $SERVER_NAME already started!"
  33. echo "PID: $PIDS"
  34. exit 1
  35. fi
  36. if [ -n "$SERVER_PORT" ]; then
  37. # linux 下查询端口是否占用
  38. SERVER_PORT_COUNT=`netstat -tln | grep :$SERVER_PORT | wc -l`
  39. if [ $SERVER_PORT_COUNT -gt 0 ]; then
  40. echo "ERROR: netstat the $SERVER_NAME port $SERVER_PORT already used!"
  41. exit 1
  42. fi
  43. # mac 下查询端口是否占用
  44. LSOF_AVA=`command -v lsof | wc -l`
  45. if [ $LSOF_AVA -gt 0 ]; then
  46. SERVER_PORT_COUNT=`lsof -i:$SERVER_PORT | wc -l`
  47. if [ $SERVER_PORT_COUNT -gt 0 ]; then
  48. echo "ERROR: lsof the $SERVER_NAME port $SERVER_PORT already used!"
  49. exit 1
  50. fi
  51. fi
  52. fi
  53. # 项目日志输出绝对路径
  54. LOGS_DIR=$DEPLOY_DIR/logs
  55. # 如果logs文件夹不存在,则创建文件夹
  56. if [ ! -d $LOGS_DIR ]; then
  57. mkdir $LOGS_DIR
  58. fi
  59. # JVM Configuration
  60. JAVA_OPTS=" -Duser.timezone=Asia/Shanghai"
  61. JAVA_MEM_OPTS=" -server -XX:SurvivorRatio=6 -XX:+UseParallelGC "
  62. # 加载外部log文件的配置
  63. LOG_IMPL_FILE=logback-spring.xml
  64. LOGGING_CONFIG=""
  65. if [ -f "$CONF_DIR/$LOG_IMPL_FILE" ]
  66. then
  67. LOGGING_CONFIG="-Dlogging.config=$CONF_DIR/$LOG_IMPL_FILE"
  68. fi
  69. CONFIG_FILES=" -Dlogging.path=$LOGS_DIR $LOGGING_CONFIG -Dspring.config.location=$CONF_DIR/ "
  70. echo -e "Starting the $SERVER_NAME ..."
  71. nohup java $JAVA_OPTS $JAVA_MEM_OPTS $CONFIG_FILES -jar $DEPLOY_DIR/$JAR_NAME >/dev/null 2>&1 &
  72. COUNT=0
  73. while [ $COUNT -lt 1 ]; do
  74. echo "... "
  75. sleep 1
  76. if [ -n "$SERVER_PORT" ]; then
  77. COUNT=`netstat -an | grep $SERVER_PORT | wc -l`
  78. else
  79. COUNT=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`
  80. fi
  81. if [ $COUNT -gt 0 ]; then
  82. break
  83. fi
  84. done
  85. echo "Service starting OK!"
  86. PIDS=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'`
  87. echo "Service PID: $PIDS"