startJar.sh 4.2 KB

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