boot.sh 2.5 KB

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