startJar.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. APP_NAME=
  2. APP_DEBUG=
  3. APP_DUMPlOG=/mnt/fdkk_bim/logs/heapdump/heapdump.log
  4. date=`date`
  5. path=$(pwd)
  6. usage() {
  7. echo "case: sh run.sh [start|stop|restart|status|checkServer]"
  8. echo "请类似这样执行 ./*.sh start prod or ./*sh restart prod"
  9. exit 1
  10. }
  11. checkEnv(){
  12. echo "prod config"
  13. if [ -z "${APP_NAME}" ] || [ -z "${APP_DEBUG}" ]; then #判断pid是否为空
  14. if [[ $1 = 'prod' ]]; then
  15. echo "prod config"
  16. APP_NAME=fdkk-bim-prod.jar
  17. APP_DEBUG=5527
  18. elif [[ $1 = 'uat' ]] ; then
  19. echo "uat config"
  20. APP_NAME=fdkk-bim-uat.jar
  21. APP_DEBUG=5522
  22. else
  23. echo "没有设置环境"
  24. fi
  25. # else
  26. # echo "已经设置-${APP_NAME}-${APP_DEBUG}"
  27. fi
  28. }
  29. # 判断当前服务是否已经启动的函数
  30. is_exist(){
  31. checkEnv $1
  32. pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` #根据ps 命令查询当前服务的进程号 赋值给pid"
  33. if [ -z "${pid}" ]; then #判断pid是否为空
  34. echo "pid 不存在"
  35. return 1
  36. else
  37. echo "pid 存在"
  38. return 0
  39. fi
  40. }
  41. start(){
  42. checkEnv $1
  43. is_exist
  44. if [ $? -eq "0" ]; then # [$? -eq "0"] 说明pid不等于空 说明服务正在运行中,将进程号打印出来
  45. echo "${APP_NAME} running. pid=${pid}"
  46. else
  47. nohup java -jar -Xmx4072M -Xms1024M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${APP_DUMPlOG} -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=${APP_DEBUG} ${path}/${APP_NAME} --spring.profiles.active=$1 > logs.log 2>error.log & # 说明pid为空 执行java -jar 命令启动服务
  48. # 执行java -jar 命令启动服务
  49. echo "${APP_NAME} started启动"
  50. fi
  51. }
  52. stop(){
  53. echo "执行 stop 方法"
  54. checkEnv $1
  55. is_exist
  56. if [ $? -eq "0" ]; then # [$? -eq "0"] 说明pid不等于空 说明服务正在运行中,将进程号杀死
  57. kill -15 $pid
  58. echo "${pid} stopped-停止"
  59. else
  60. echo "${APP_NAME} 没有运行"
  61. fi
  62. }
  63. status(){
  64. echo "执行 status 方法"
  65. checkEnv $1
  66. is_exist
  67. if [ $? -eq "0" ]; then
  68. echo "${APP_NAME} running-启动. Pid is ${pid}"
  69. else
  70. echo "${APP_NAME} 没有运行"
  71. fi
  72. }
  73. checkServer(){
  74. echo "执行 status 方法"
  75. checkEnv $1
  76. is_exist
  77. if [ $? -eq "0" ]; then
  78. echo "${APP_NAME} running-正在运行. Pid is ${pid}"
  79. echo `date +%Y-%m-%d` `date +%H:%M:%S` ${APP_NAME} "running-正在运行. Pid is ${pid}" >> check.log
  80. exit 0
  81. else
  82. echo "${APP_NAME} 没有运行,即将重启"
  83. echo `date +%Y-%m-%d` `date +%H:%M:%S` ${APP_NAME} "没有运行,即将重启" >> check.log
  84. restart $1
  85. fi
  86. }
  87. # 重启命令其实就是先执行关闭命令 再执行重启命令
  88. restart(){
  89. echo "执行 restart 方法"
  90. checkEnv $1
  91. is_exist
  92. if [ $? -eq "0" ]; then # [$? -eq "0"] 说明pid不等于空 说明服务正在运行中,将进程号杀死
  93. kill -9 $pid
  94. echo "${pid} stopped-停止"
  95. else
  96. echo "${APP_NAME} 没有运行"
  97. fi
  98. sleep 5
  99. is_exist
  100. if [ $? -eq "0" ]; then # [$? -eq "0"] 说明pid不等于空 说明服务正在运行中,将进程号打印出来
  101. echo "${APP_NAME} running. pid=${pid}"
  102. else
  103. nohup java -jar -Xmx4072M -Xms1024M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${APP_DUMPlOG} -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=${APP_DEBUG} ${path}/${APP_NAME} --spring.profiles.active=$1 > logs.log 2>error.log & # 说明pid为空 执行java -jar 命令启动服务
  104. echo "${APP_NAME} started启动"
  105. fi
  106. }
  107. # 这里的$1 取的是当前输入命令 的第二个参数 ./start.sh start
  108. case "$1" in
  109. "start")
  110. start $2
  111. ;;
  112. "stop")
  113. stop $2
  114. ;;
  115. "status")
  116. status $2
  117. ;;
  118. "restart")
  119. restart $2
  120. ;;
  121. "checkServer")
  122. checkServer $2
  123. ;;
  124. *)
  125. usage
  126. ;;
  127. esac