管理多tomcat实例的shell脚本
为了简化tomcat的部署复杂度, 把以前单独配置的脚本提出来做了一个带参数的, 可以用于单机环境下的多tomcat实例管理.
其中deploy功能, 会将指定的模块war按日期时间更名备份后, 再部署新的war
命令行格式为
- tc.sh [tomcat_location] {status|start|stop|restart|jstat|deploy} [module_name]
脚本代码
- # Please define the absolute path of tomcat instance
- JAVA_HOME=/opt/java/jdk1..0_101
- TC_BASE=/home/tomcat
- BUILD_FOLDER=/home/tomcat/builds
- status() {
- echo -n "[$(date +%Y%m%d-%H%M%S)] "
- pid=`ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
- if [ -z ${pid} ] ; then
- echo $' is not running'
- else
- echo $' is running at pid: '${pid}
- fi
- }
- start() {
- echo -n "[$(date +%Y%m%d-%H%M%S)] Start: "
- pid=`ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
- if [ -z ${pid} ] ; then
- echo $
- . ${CATALINA_BASE}/bin/startup.sh
- else
- echo $' is running at pid: '${pid}
- fi
- }
- stop() {
- if [ -z $ ]; then
- exit
- fi
- echo -n "[$(date +%Y%m%d-%H%M%S)] Stop: "
- pid=`ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
- if [ -z $pid ] ; then
- echo $' is not running'
- else
- echo $' is running at pid:'${pid}
- . ${CATALINA_BASE}/bin/shutdown.sh
- sleep
- fi
- pid=`ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
- if [ -z $pid ] ; then
- echo 'Done'
- else
- echo 'Still running, now killing with pid:'${pid}
- ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'|xargs kill -s
- fi
- }
- restart() {
- stop $
- sleep
- start $
- }
- deploy() {
- if [ -z $ ]; then
- echo $"Usage: $0 $1 deploy [module_name]"
- exit
- fi
- [ -f ${BUILD_FOLDER}/$.war ] || exit
- stop $
- df -h
- echo ''
- local BACKUP_FILENAME=$-$(date +%Y%m%d-%H%M).war
- echo -n "[$(date +%Y%m%d-%H%M%S)] Deploy: "
- echo -n "backup ${BACKUP_FILENAME}... "
- mv ${CATALINA_BASE}/webapps/$.war ${BUILD_FOLDER}/${BACKUP_FILENAME}
- echo -n "clean... "
- rm -rf ${CATALINA_BASE}/webapps/$
- echo -n "copy... "
- cp -f ${BUILD_FOLDER}/$.war ${CATALINA_BASE}/webapps/
- echo 'done'
- start $
- }
- jstat() {
- if [ -z $ ]; then
- exit
- fi
- local CATALINA_BASE=${TC_BASE}/$
- [ -d ${CATALINA_BASE} ] || exit
- echo -n "[$(date +%Y%m%d-%H%M%S)] jstat: "
- pid=`ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
- if [ -z $pid ] ; then
- echo $' is not running'
- else
- echo $' is running at pid:'${pid}
- ${JAVA_HOME}/bin/jmap -heap ${pid}
- echo ''
- ${JAVA_HOME}/bin/jstat -gcutil ${pid}
- fi
- }
- if [ -z $ ]; then
- echo $"Usage: $0 [tomcat_location] {status|start|stop|restart|jstat|deploy} [module_name]"
- exit
- else
- target=${%/}
- fi
- CATALINA_BASE=${TC_BASE}/$target
- [ -d ${CATALINA_BASE} ] || exit
- case "$2" in
- status)
- $ $target
- ;;
- start)
- $ $target
- ;;
- stop)
- $ $target
- ;;
- restart)
- $ $target
- ;;
- jstat)
- $ $target
- ;;
- deploy)
- $ $target $
- ;;
- *)
- echo $"Usage: $0 [tomcat_location] {status|start|stop|restart|jstat|deploy} [module_name]"
- exit
- esac
对应的tomcat实例内部的startup.sh 和 shutdown.sh, 只需要配置jvm参数和tomcat源路径
startup.sh
- JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:MaxNewSize=512m -Djava.awt.headless=true"
- CATALINA_HOME=/opt/tomcat/apache-tomcat-8.0.
- . $CATALINA_HOME/bin/catalina.sh start
shutdown.sh
- CATALINA_HOME=/opt/tomcat/apache-tomcat-8.0.
- . $CATALINA_HOME/bin/catalina.sh stop
管理多tomcat实例的shell脚本的更多相关文章
- 实用脚本----Linux下Jdk和Tomcat自动安装shell脚本总结
系统环境为:ubuntu 14.04 一.JDK 自动安装脚本 jdk自动安装bash shell脚本,截止今天(2014/10/15)亲测可用: sudo su #切换到root权限 mkdir / ...
- Dockerfile 构建后端tomcat应用并用shell脚本实现jenkins自动构建
Dockerfile 文件构建docker镜像 FROM centos MAINTAINER zhaoweifeng "zh******tech.cn" ENV LANG en_U ...
- 快速部署tomcat项目的Shell脚本
为了做集群测试,在每台机器上装了3个tomcat,每次发布项目的时候都要反复敲一些命令,重启tomcat之前先检查tomcat进程有没有停掉,没有还要手动kill该进程. 发布次数多了,操作就比较繁琐 ...
- [转] 快速部署Tomcat项目的Shell脚本
为了做集群测试,在每台机器上装了3个tomcat,每次发布项目的时候都要反复敲一些命令,重启tomcat之前先检查tomcat进程有没有停掉,没有还要手动kill该进程. 发布次数多了,操作就比较繁琐 ...
- Linux 启动、停止、重启tomcat工具(Shell脚本)
1. 启动 #!/bin/bash pids=`ps -ef | grep java | grep -w tomcat | awk '{print $2}'` #pids=`ps -ef | gr ...
- 【shell脚本实例】shell脚本统计单词频率、出现次数最多的n个单词
1. 统计的对象words.txt,每个单词占一行(从简考虑了~) zjd@ubuntu:~/test$ cat word.txt used this count mysql count this u ...
- Shell脚本编写
1.什么是Shell脚本 Shell脚本是利用 shell 的功能所写的一个程序 program,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面, 搭配正则表达式.管 ...
- Shell脚本的调试技术
编程中必不可少的一点就是调试,Shell脚本以其强大的功能令人向往,当然,它的强大之处不只是体现在语言的实现功能上,更强大的是它的调试功能,下面,我将以实例讲解Shell脚本的调试技术. 下面是我所用 ...
- 【运维】Shell -- 快速上手Shell脚本
1.Shell概述 shell脚本是利用shell的功能所写的一个[程序(program)].这个程序是使用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式.管道命令与数 ...
随机推荐
- FPC and Qt
Introduction There are a number of Qt bindings available: Qt3 A QtC based binding by Theo Another Qt ...
- [转]使用互斥对象让程序只运行一次(delphi)
使用互斥对象让程序只运行一次“怎么让我的程序在运行时不能重复打开?”经常在论坛上看到有朋友问这方面的问题.本文将比较详细的说明这一问题,并给出一个较为完善的解决方案. 尽管这已经不是一个新问题了,但这 ...
- 华清远见Linux设备驱动(每章小结)
1. linux设备驱动是以内核模块的方式而存在的,在具体的驱动开发中将驱动编译为模块具有很到的工程意义.因为如果将正在开发中的驱动编译如内核,而开发过程中会不断修改驱动代码,则需要不断的编译和重启 ...
- 一个简易Asp.net网站日志系统
前不久在网站上看到了网站日志访问记录组件UserVisitLogsHelp开源了! 这篇博客感觉还不错,就把源码download了下来,学习一下,发现里面的代码书写和设计并不是很好,于是自己改了改.自 ...
- Gridview利用DataFormatString属性设置数据格式
首 先把Gridview的AutoGenerateColumns属性设为False(默认是False),DataField选择相应的字段,特别需要注 意的是要把需要设置的字段的HtmlEncode属性 ...
- python 爬虫随机获取User-Agent
可以有两种方法: 1.随机生成 首先安装 pip install fake-useragent import random from fake_useragent import UserAgent d ...
- 【Java】阿里巴巴Java开发手册(纪念版)
下载地址:(最新纪念版 2017-11-30 V1.3.1) <阿里巴巴Java开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断的完善,系统化 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十五)Structured Streaming:同一个topic中包含一组数据的多个部分,按照key它们拼接为一条记录(以及遇到的问题)。
需求: 目前kafka的topic上有一批数据,这些数据被分配到9个不同的partition中(就是发布时key:{m1,m2,m3,m4...m9},value:{records items}),m ...
- intel 汇编中断解释
汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序.使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用. 显示服务 (Video Service: ...
- SSAS知识回放之订单数据分析
1:目标 基于已经做好的DW,利用SSAS实现一个多维数据模型的创建,通过浏览可以简单的实现订单数据的分析 2:步骤 2.1:添加数据源 如下图所示,创建一个数据仓库层的数据源连接 2.2:添加数据源 ...