-------------------------------------------------[翠花,上脚本]-------------------------------------------------------------------------------
  1 #!/bin/sh
  2 #
  3 # function: Tomcat mutil instance init script for Linux.
  4 # author:
  5 #          QQ:765482322
  6 #          mail: login_532_gajun@sina.com
  7 # notice:
  8 #        1.如果tomcat实例是在同一个目录下,那么只需要修改此脚本中 "export CATALINA_BASE=(path)/$instance_name"
  9 #          中的path为你所有实例的父目录即可,--instance= 选项就可以使用相对路径
 10 #       2.如果tomcat实例不在同一个目录下,那么只需要修改此脚本中 "export CATALINA_BASE=$instance_name"
 11 #          --instance= 选项后面就得跟实例的绝对路径
 12 #       3.把此脚本放到/usr/local/bin/ 并重名命为tomcat-multi,注意修改其他用户有执行权限
 13
 14 # 定义java的相关变量
 15 export JAVA_HOME=/usr/java/latest
 16
 17 # define function
 18 # 脚本命令使用语法检测
 19 syntax_check(){
 20     if [ $arg_count -ne 2 ];then
 21         help_info
 22         exit 1
 23     fi
 24     option && action || (help_info;exit 1)
 25 }
 26
 27 # 打印脚本使用帮助信息
 28 help_info(){
 29 cat|grep --color ".*" << EOF
 30 Usage: tomcat-multil <OPTION>... <action>
 31
 32   OPTION:
 33      --instance=NAME       Add an instance Name must be an instance of the home directory
 34
 35   action:
 36      start                 Run an instance
 37      stop                  Stop an instance
 38      restart               Restart an instance
 39      configtest            Check configure file
 40      status                Show an instance status
 41      print_log             Print tomcat instance run log
 42 EOF
 43 }
 44
 45 # 根据给定的参数判断用户对tomcat实例所要执行的动作
 46 action(){
 47 run_action=("start" "stop" "restart" "configtest" "status" "print_log")
 48 local i=1
 49 while [ $i -le 2 ];do
 50         for j in ${run_action[*]};do
 51             if [ ${arg[$i-1]} == $j ];then
 52                 hit_action=$j;break
 53             else
 54                 continue
 55             fi
 56         done
 57         if [ -n "$hit_action" ];then
 58         #echo "hit_action=$hit_action"
 59             break
 60         else
 61             let i++
 62         fi
 63 done
 64 if [ -z "$hit_action" ];then
 65     help_info
 66     exit 1
 67 fi
 68
 69 }
 70
 71 # 通过选项--instance 得到tomcat实例所在路径
 72 option() {
 73     local i=1
 74     while [ $i -le 2 ];do
 75         if echo ${arg[$i-1]} | egrep -i "(^--instance=)" &> /dev/null;then
 76             instance_name=$(echo ${arg[$i-1]} | sed -r 's/--instance=(.*)/\1/')
 77             break
 78         else
 79             let i++
 80         fi
 81     done
 82     if [ -z "$instance_name" ];then
 83         help_info
 84         exit 1
 85     fi
 86 }
 87
 88 # 启动tomcat实例
 89 start(){
 90     $CATALINA_HOME/bin/startup.sh &> /dev/null
 91     sleep 2
 92     if ps -ef | grep "java" | grep -w "$CATALINA_HOME" &> /dev/null ;then
 93         echo -e "Starting tomcat instance $instance_name:                    \033[32m[  OK  ]\033[0m"
 94     #   echo $tomcat_getpid | bash > $pidfile
 95     else
 96         echo -e "Starting tomcat instance $instance_name:                    \033[31m[FAILED]\033[0m"
 97     exit 1
 98     fi
 99 }
100
101 # 停止tomcat实例,注意有时使用catalina.sh 执行 stop不成功,所以加了层判断,如果使用catalina.sh 关闭不了进程,就使用kill杀死进程
102 stop(){
103     $CATALINA_HOME/bin/shutdown.sh &> /dev/null
104     sleep 2
105     if ps -ef | grep "java" | grep -w "$CATALINA_HOME" &> /dev/null;then
106         ps -ef | grep "java" | grep -w "$CATALINA_HOME" | awk '{print $2}' | xargs kill -9 &> /dev/null
107             if [ $? -eq 0 ];then
108                 echo -e "Stopping tomcat instance $instance_name:                    \033[32m[  OK  ]\033[0m"
109             else
110                 echo -e "Stopping tomcat instance $instance_name:                    \033[31m[FAILED]\033[0m"
111                 exit 2
112             fi
113     else
114         echo -e "Stopping tomcat instance $instance_name:                    \033[32m[  OK  ]\033[0m"
115     fi
116 }
117
118 # 重启tomcat实例
119 restart(){
120     $CATALINA_HOME/bin/configtest.sh &> /dev/null
121     if [ $? -eq 0 ];then
122         if ps -ef | grep "java" | grep -w "$CATALINA_HOME" &> /dev/null ;then
123             stop
124         else
125             echo -e "Stopping tomcat instance $instance_name:                    \033[31m[FAILED]\033[0m"
126         fi
127
128         start
129     else
130         exit 2
131     fi
132 }
133
134 # 查看tomcat实例状态
135 status(){
136     if ps -ef | grep "java" | grep -w "$CATALINA_HOME" &> /dev/null;then
137         ps -ef | grep "java" | grep -w "$CATALINA_HOME" | awk '{print $2}' | while read java_pid;do
138             echo -e "\033[32mOK: tomcat instance $instance_name is running ($java_pid)\033[0m"
139         done
140         return 0
141     else
142         echo -e "\033[31mWarning: tomcat instance $instance_name is not running\033[0m"
143         return 2
144     fi
145 }
146
147 # tomcat实例配置文件测试
148 configtest(){
149    $CATALINA_HOME/bin/configtest.sh
150 }
151
152 # 打印tomcat启动日志
153 print_log(){
154     local exit_code
155     whiptail --title "Print Yes/No Log" --yesno "Choose between Yes and No." 10 60
156     exit_code=`echo $?`
157     if [ $exit_code -eq 0 ];then
158         echo -e "\033[32m====================[$instance_name Log]=======================================\033[0m"
159         tailf $CATALINA_HOME/logs/catalina.out
160     else
161         return 1
162     fi
163 }164 # main
165 # 根据函数syntax确定tomcat实例的家目录
166 arg_count=$#
167 arg=("$1" "$2")
168 syntax_check
169 #export CATALINA_HOME=/usr/local/tomcat/instance/$instance_name
170 export CATALINA_HOME=/opt/tomc_instance/$instance_name
171
172 #
173 case $hit_action in
174 start)
175     if ps -ef | grep "java" | grep -w "$CATALINA_HOME" &> /dev/null ;then
176         echo -e "\033[32mNotice: Service tomcat instance $instance_name is running ...\033[0m"
177         exit 1
178     else
179         start
180     sleep 0.3
181     print_log
182     fi
183     ;;
184
185 stop)
186     if ps -ef | grep "java" | grep -w "$CATALINA_HOME" &> /dev/null ;then
187         stop
188     sleep 0.3
189     print_log
190     else
191         echo -e "\033[31mWarning: Service tomcat instance $instance_name is stopped\033[0m"
192     fi
193     ;;
194
195 restart)
196     restart
197     sleep 0.3
198     print_log
199     ;;
200
201 status)
202     status
203     ;;
204
205 configtest)
206     configtest
207     ;;
208
209 print_log)
210     print_log
211     ;;
212
213 *)
214     help_info
215 esac

实例操作:

 1.查看一个实例的状态

2.查看帮助信息,没有使用-h选项,不过你可以故意给错选项来查看 ,提供了比较简单地几个选项

3.多实例操作,需要以下的脚本,你可以把它保存并重名命为tomcatd,然后把它扔到/etc/init.d/tomcatd ,确保其有执行权限。

 1 #!/bin/bash
 2 #
 3 # chkconfig: 2345 99 21
 4 # description: tomcat multi instance init scripts
 5
 6 # 通过instance数组把你要启动的tomcat实例写在这里
 7 instance=("tomcat8001" "tomcat8002")
 8
 9 # 该服务需要用到的执行程序
10 prog=/usr/local/bin/tomcat-multi
11
12 # 通过for循环遍历数组内的实例名称启动多个实例
13 case $1 in
14 start)
15     for i in ${instance[*]};do $prog  --instance=$i start;done
16     ;;
17
18 stop)
19     for i in ${instance[*]};do $prog  --instance=$i stop;done
20     ;;
21
22 restart)
23     for i in ${instance[*]};do $prog  --instance=$i restart;done
24     ;;
25
26 configtest)
27     for i in ${instance[*]};do $prog  --instance=$i configtest;done
28     ;;
29
30 status)
31     for i in ${instance[*]};do $prog  --instance=$i status;done
32     ;;
33                                                                        

  4. 启动并打印日志

 

总结:

     @解决tomcat多实例在部署应用程序后每个手动重启。

     @通过status 选项查看tomcat实例在线情况

     @实现tomcat多实例集中管理,当然通过tomcat-multi 可以实现单实例管理

     @脚本有不合适地方,还请大家给予指出,这里只是给大家一个模板

转载于:https://www.cnblogs.com/M18-BlankBox/p/5881508.html

tomcat 多实例的Sys V风格脚本相关推荐

  1. tomcat 多实例启动脚本

    为什么80%的码农都做不了架构师?>>>    tomcat 多实例启动脚本 代码如下: #!/bin/sh# # Tomcat start/stop shell multiple ...

  2. docker tomcat 多开 实例_Docker zabbix-agent 监控 docker tomcat 多实例

    目录 监控方案概述 我们使用 zabbix-agent 的方式来监控 多个 tomcat 8.5.51 ,由于我们需要监控的是 Docker 容器里的 Tomcat ,而 zabbix 官方模板并不支 ...

  3. 单tomcat多实例的实现

    2019独角兽企业重金招聘Python工程师标准>>> 单tomcat多实例的实现 缘起 考虑这样一个场景:在一台机器上需要启动多个tomcat实例,通常的做法是创建多个tomcat ...

  4. Tomcat多实例和负载均衡

    文章目录 一.Tomcat多实例 1.1 Tomcat多实例的步骤(理论) 1.安装好 jdk 2.安装 tomcat 3.配置 tomcat 环境变量 4.修改 tomcat2 中的 server. ...

  5. Tomcat多实例Nginx负载均衡

    1.线上云主机构建Tomcat多实例 1)Tomcat是一款开源的.免费的WEB服务器软件,是Apache基金会旗下的,主要是用于发布网站代码.提供网页信息服务的,用户通过浏览器可以实现页面的访问. ...

  6. Tomcat多实例与负载均衡

    Tomcat多实例与负载均衡 前言 一.Tomcat多实例 (1)安装jdk (2)安装tomcat (3)配置tomcat环境变量 (4)修改tomcat2中的主配置文件 (5)修改启动脚本和关闭脚 ...

  7. # Tomcat 多实例部署 教程

    Tomcat 多实例部署 教程 我们首先看到的是tomcat的目录结构,其每个文件夹有以下用途: bin – 包含所有运行tomcat的二进制和脚本文件 lib – 包含tomcat使用的所有共享库 ...

  8. Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写

    测试场景: 模拟并发100个user,在TesterHome 站内搜索VV00CC 添加线程组 添加HTTP信息头管理器 添加HTTP Sampler 填写HTTP Sampler中的信息 添加监听器 ...

  9. Nginx+Tomcat 搭建负载均衡、动静分离(tomcat多实例)

    文章目录 一.Tomcat多实例配置 1.关闭防火墙 2.将软件包上传到/opt目录下 3.安装JDK 4.安装Tomcat 5.配置tomcat环境变量 6.修改tomcat2中的server.xm ...

  10. Tomcat 多实例安装 发布3个java项目: 8080 8081 8082

    Tomcat 多实例配置  一个服务器安装几个tomcat,为了节省资源 1. cp -r apache-tomcat-9.0.6/  tomcat 2.进入到conf,修改配置文件 vim serv ...

最新文章

  1. 查看计算机连接的WIFI密码
  2. shiro 的session持久化
  3. e7xue.php漏洞_简要分析最近的dedecms通杀漏洞以及漏洞补丁的绕过
  4. 什么是实例对象python_python判断类型:想知道一个对象(实例或者变量)是什么类型,什么结构的...
  5. php运行代码运行退出为0,php – Selenium测试用例返回进程以退出代码0结束
  6. oauth 使用令牌_使用OAuth2令牌的安全REST服务
  7. linux中touch命令的作用,Linux中touch命令的作用是什么
  8. 第十二章 非对称加密算法-RSA
  9. 没解决:如何离线更新eclipse支持的Compiler compliance level
  10. 淦!看了 B 站上的这些 Python 视频,我站起来了!
  11. activiti工作流简介
  12. 论文翻译:2020_Improving Perceptual Quality By Phone-Fortified Perceptual Loss For Speech Enhancement...
  13. Chrome 浏览器小恐龙游戏变身超级马利奥
  14. 课题申报书范文_课题申请书范例
  15. MacBook外接显示器及相关设置详解(分屏/多屏)
  16. 国际高智商组织门萨的智商测试题-谋杀你的脑细胞
  17. h5案例分享 华谊电影《老炮儿》约战
  18. C primer plus(第六版)第五章源代码
  19. 紫光武汉新芯珠联璧合 引领存储“芯”篇章
  20. 为什么电子邮件的账号地址公司是统一的,电子邮件地址该怎么写?

热门文章

  1. LSTM+attention代码原理详解
  2. OpenCV+dlib+Python实现人体五官检测
  3. Centos7.7下编译安装 cmake
  4. python基于scipy拟合构建所需统计分析模型,可视化分析展示
  5. c++编程时为什么老是出现cout未定义
  6. 2021-08-21 初识javabean
  7. java 类省_2019 第十届蓝桥杯大赛软件类省赛 Java A组 题解
  8. FISCO BCOS 确定性多合约并行(DMC)
  9. 区块链主流共识算法全面解析
  10. 区块链 Fisco bcos 智能合约(11)-深入浅出Solidity