startJar.sh 5.0 KB

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