tomcat管理脚本

╰+哭是因爲堅強的太久メ 2022-07-24 10:29 309阅读 0赞
  1. #!/bin/bash
  2. #kconfig: 345 80 15
  3. # description: Multiple tomcats service management script.
  4. # Source function library.
  5. . /etc/rc.d/init.d/functions
  6. # 第几个tomcat
  7. tcName=$1
  8. basedir=/home/careland/tools/$tcName
  9. tclog=${basedir}/logs/catalina.out
  10. RETVAL=0
  11. start(){
  12. checkrun
  13. if [ $RETVAL -eq 0 ]; then
  14. echo "-- Starting tomcat..."
  15. $basedir/bin/startup.sh
  16. touch $basedir/logs/${tcName}
  17. checklog
  18. status
  19. else
  20. echo "-- tomcat already running"
  21. fi
  22. }
  23. # 停止某一台tomcat,如果是重启则带re参数,表示不查看日志,等待启动时再提示查看
  24. stop(){
  25. checkrun
  26. if [ $RETVAL -eq 1 ]; then
  27. echo "-- Shutting down tomcat..."
  28. $basedir/bin/shutdown.sh
  29. if [ "$1" != "re" ]; then
  30. checklog
  31. else
  32. sleep 5
  33. fi
  34. rm -f $basedir/logs/${tcName}
  35. status
  36. else
  37. echo "-- tomcat not running"
  38. fi
  39. }
  40. status(){
  41. checkrun
  42. if [ $RETVAL -eq 1 ]; then
  43. echo -n "-- Tomcat ( pid "
  44. ps ax --width=1000 |grep ${tcName}|grep "org.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'
  45. echo -n ") is running..."
  46. echo
  47. else
  48. echo "-- Tomcat is stopped"
  49. fi
  50. #echo "---------------------------------------------"
  51. }
  52. # 查看tomcat日志,带vl参数
  53. log(){
  54. status
  55. checklog yes
  56. }
  57. # 如果tomcat正在运行,强行杀死tomcat进程,关闭tomcat
  58. kill(){
  59. checkrun
  60. if [ $RETVAL -eq 1 ]; then
  61. read -p "-- Do you really want to kill ${tcName} progress?[no])" answer
  62. case $answer in
  63. Y|y|YES|yes|Yes)
  64. ps ax --width=1000 |grep ${tcName}|grep "org.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'|xargs kill -9
  65. status
  66. ;;
  67. *);;
  68. esac
  69. else
  70. echo "-- exit with $tcName still running..."
  71. fi
  72. }
  73. checkrun(){
  74. ps ax --width=1000 |grep ${tcName}| grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}' | wc | awk '{print $2}' >/tmp/tomcat_process_count.txt
  75. read line < /tmp/tomcat_process_count.txt
  76. if [ $line -gt 0 ]; then
  77. RETVAL=1
  78. return $RETVAL
  79. else
  80. RETVAL=0
  81. return $RETVAL
  82. fi
  83. }
  84. # 如果是直接查看日志viewlog,则不提示输入[yes],否则就是被stop和start调用,需提示是否查看日志
  85. checklog(){
  86. answer=$1
  87. if [ "$answer" != "yes" ]; then
  88. read -p "-- See Catalina.out log to check $2 status?[yes]" answer
  89. fi
  90. case $answer in
  91. Y|y|YES|yes|Yes|"")
  92. tail -f ${tclog}
  93. ;;
  94. *)
  95. # status
  96. # exit 0
  97. ;;
  98. esac
  99. }
  100. checkexist(){
  101. if [ ! -d $basedir ]; then
  102. echo "-- tomcat $basedir does not exist."
  103. exit 0
  104. fi
  105. }
  106. case "$2" in
  107. start)
  108. checkexist
  109. start
  110. exit 0
  111. ;;
  112. stop)
  113. checkexist
  114. stop
  115. exit 0
  116. ;;
  117. restart)
  118. checkexist
  119. stop re
  120. start
  121. exit 0
  122. ;;
  123. status)
  124. checkexist
  125. status
  126. #$basedir/bin/catalina.sh version
  127. exit 0
  128. ;;
  129. log)
  130. checkexist
  131. log
  132. exit 0
  133. ;;
  134. kill)
  135. checkexist
  136. status
  137. kill
  138. exit 0
  139. ;;
  140. *)
  141. echo "Usage: $0 {start|stop|restart|status|log|kill}"
  142. echo " service tomcat {0|1|..} {start|stop|restart|status|log|kill}"
  143. esac
  144. exit 0

把这个脚本存为/etc/init.d/tomcat,用法是service tomcat [tomcat文件夹名] start

发表评论

表情:
评论列表 (有 0 条评论,309人围观)

还没有评论,来说两句吧...

相关阅读

    相关 tomcat假死重启脚本

    最近几天老是出现tomcat假死的情况,主要表现为,进程还在,但是tomcat不再提供任何服务,并且日志也停止记录。 因为暂时无法定位原因,所以先采用临时的解决方案,服务器上