boot 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/bin/bash
  2. APP_NAME=app-1.0-SNAPSHOT.jar
  3. cd `dirname $0`
  4. cd ..
  5. STDOUT_FILE=/dev/null
  6. # 配置文件存放位置,如果有多个,则以逗号分隔
  7. JAVA_PATH_OPTS=" -Dloader.path=config -Djava.io.tmpdir=./ "
  8. # 基础参数
  9. JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 "
  10. # java调试
  11. JAVA_DEBUG_OPTS=""
  12. if [ "$2" = "debug" ];then
  13. JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081 "
  14. fi
  15. # 内存配置
  16. JAVA_MEM_OPTS=""
  17. BITS=`java -version 2>&1 | grep -i 64-bit`
  18. if [ -n "$BITS" ]; then
  19. JAVA_MEM_OPTS=" -server -Xms2g -Xmx2g -Xloggc:log/gc.log "
  20. fi
  21. # 使用说明,用来提示输入参数
  22. usage() {
  23. echo "Usage: sh boot [APP_NAME] [start|stop|restart|status]"
  24. exit 1
  25. }
  26. # 检查程序是否在运行
  27. is_exist(){
  28. # 获取PID
  29. PID=$(ps -ef |grep ${APP_NAME} | grep -v $0 |grep -v grep |awk '{print $2}')
  30. # -z "${pid}"判断pid是否存在,如果不存在返回1,存在返回0
  31. if [ -z "${PID}" ]; then
  32. # 如果进程不存在返回1
  33. return 1
  34. els
  35. # 进程存在返回0
  36. return 0
  37. fi
  38. }
  39. # 定义启动程序函数
  40. start(){
  41. is_exist
  42. if [ $? -eq "0" ]; then
  43. echo "${APP_NAME} is already running, PID=${PID}"
  44. else
  45. nohup java -jar $JAVA_PATH_OPTS $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS ${APP_NAME} >> ${STDOUT_FILE} 2>&1 &
  46. PID=$(echo $!)
  47. echo "${APP_NAME} start success, PID=$!"
  48. fi
  49. }
  50. # 停止进程函数
  51. stop(){
  52. is_exist
  53. if [ $? -eq "0" ]; then
  54. kill -9 ${PID}
  55. # 检测是否停止
  56. COUNT=1
  57. while [ $COUNT -eq 1 ]
  58. do
  59. echo -e ".\c"
  60. sleep 1
  61. is_exist
  62. if [ -z "${PID}" ]; then
  63. COUNT=0
  64. echo "${APP_NAME} process stop"
  65. fi
  66. done
  67. else
  68. echo "There is not the process of ${APP_NAME}"
  69. fi
  70. }
  71. # 重启进程函数
  72. restart(){
  73. stop
  74. start
  75. }
  76. # 查看进程状态
  77. status(){
  78. is_exist
  79. if [ $? -eq "0" ]; then
  80. echo "${APP_NAME} is running, PID=${PID}"
  81. else
  82. echo "There is not the process of ${APP_NAME}"
  83. fi
  84. }
  85. case $1 in
  86. "start")
  87. start
  88. ;;
  89. "stop")
  90. stop
  91. ;;
  92. "restart")
  93. restart
  94. ;;
  95. "status")
  96. status
  97. ;;
  98. *)
  99. usage
  100. ;;
  101. esac
  102. exit 0