tomcat 多实例的Sys V风格脚本
-------------------------------------------------[翠花,上脚本]-------------------------------------------------------------------------------
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风格脚本相关推荐
- tomcat 多实例启动脚本
为什么80%的码农都做不了架构师?>>> tomcat 多实例启动脚本 代码如下: #!/bin/sh# # Tomcat start/stop shell multiple ...
- docker tomcat 多开 实例_Docker zabbix-agent 监控 docker tomcat 多实例
目录 监控方案概述 我们使用 zabbix-agent 的方式来监控 多个 tomcat 8.5.51 ,由于我们需要监控的是 Docker 容器里的 Tomcat ,而 zabbix 官方模板并不支 ...
- 单tomcat多实例的实现
2019独角兽企业重金招聘Python工程师标准>>> 单tomcat多实例的实现 缘起 考虑这样一个场景:在一台机器上需要启动多个tomcat实例,通常的做法是创建多个tomcat ...
- Tomcat多实例和负载均衡
文章目录 一.Tomcat多实例 1.1 Tomcat多实例的步骤(理论) 1.安装好 jdk 2.安装 tomcat 3.配置 tomcat 环境变量 4.修改 tomcat2 中的 server. ...
- Tomcat多实例Nginx负载均衡
1.线上云主机构建Tomcat多实例 1)Tomcat是一款开源的.免费的WEB服务器软件,是Apache基金会旗下的,主要是用于发布网站代码.提供网页信息服务的,用户通过浏览器可以实现页面的访问. ...
- Tomcat多实例与负载均衡
Tomcat多实例与负载均衡 前言 一.Tomcat多实例 (1)安装jdk (2)安装tomcat (3)配置tomcat环境变量 (4)修改tomcat2中的主配置文件 (5)修改启动脚本和关闭脚 ...
- # Tomcat 多实例部署 教程
Tomcat 多实例部署 教程 我们首先看到的是tomcat的目录结构,其每个文件夹有以下用途: bin – 包含所有运行tomcat的二进制和脚本文件 lib – 包含tomcat使用的所有共享库 ...
- Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写
测试场景: 模拟并发100个user,在TesterHome 站内搜索VV00CC 添加线程组 添加HTTP信息头管理器 添加HTTP Sampler 填写HTTP Sampler中的信息 添加监听器 ...
- Nginx+Tomcat 搭建负载均衡、动静分离(tomcat多实例)
文章目录 一.Tomcat多实例配置 1.关闭防火墙 2.将软件包上传到/opt目录下 3.安装JDK 4.安装Tomcat 5.配置tomcat环境变量 6.修改tomcat2中的server.xm ...
- Tomcat 多实例安装 发布3个java项目: 8080 8081 8082
Tomcat 多实例配置 一个服务器安装几个tomcat,为了节省资源 1. cp -r apache-tomcat-9.0.6/ tomcat 2.进入到conf,修改配置文件 vim serv ...
最新文章
- 查看计算机连接的WIFI密码
- shiro 的session持久化
- e7xue.php漏洞_简要分析最近的dedecms通杀漏洞以及漏洞补丁的绕过
- 什么是实例对象python_python判断类型:想知道一个对象(实例或者变量)是什么类型,什么结构的...
- php运行代码运行退出为0,php – Selenium测试用例返回进程以退出代码0结束
- oauth 使用令牌_使用OAuth2令牌的安全REST服务
- linux中touch命令的作用,Linux中touch命令的作用是什么
- 第十二章 非对称加密算法-RSA
- 没解决:如何离线更新eclipse支持的Compiler compliance level
- 淦!看了 B 站上的这些 Python 视频,我站起来了!
- activiti工作流简介
- 论文翻译:2020_Improving Perceptual Quality By Phone-Fortified Perceptual Loss For Speech Enhancement...
- Chrome 浏览器小恐龙游戏变身超级马利奥
- 课题申报书范文_课题申请书范例
- MacBook外接显示器及相关设置详解(分屏/多屏)
- 国际高智商组织门萨的智商测试题-谋杀你的脑细胞
- h5案例分享 华谊电影《老炮儿》约战
- C primer plus(第六版)第五章源代码
- 紫光武汉新芯珠联璧合 引领存储“芯”篇章
- 为什么电子邮件的账号地址公司是统一的,电子邮件地址该怎么写?
热门文章
- LSTM+attention代码原理详解
- OpenCV+dlib+Python实现人体五官检测
- Centos7.7下编译安装 cmake
- python基于scipy拟合构建所需统计分析模型,可视化分析展示
- c++编程时为什么老是出现cout未定义
- 2021-08-21 初识javabean
- java 类省_2019 第十届蓝桥杯大赛软件类省赛 Java A组 题解
- FISCO BCOS 确定性多合约并行(DMC)
- 区块链主流共识算法全面解析
- 区块链 Fisco bcos 智能合约(11)-深入浅出Solidity