为了简化tomcat的部署复杂度, 把以前单独配置的脚本提出来做了一个带参数的, 可以用于单机环境下的多tomcat实例管理.

其中deploy功能, 会将指定的模块war按日期时间更名备份后, 再部署新的war

命令行格式为

  1. tc.sh [tomcat_location] {status|start|stop|restart|jstat|deploy} [module_name]

脚本代码

  1. # Please define the absolute path of tomcat instance
  2. JAVA_HOME=/opt/java/jdk1..0_101
  3. TC_BASE=/home/tomcat
  4. BUILD_FOLDER=/home/tomcat/builds
  5.  
  6. status() {
  7. echo -n "[$(date +%Y%m%d-%H%M%S)] "
  8. pid=`ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
  9. if [ -z ${pid} ] ; then
  10. echo $' is not running'
  11. else
  12. echo $' is running at pid: '${pid}
  13. fi
  14. }
  15.  
  16. start() {
  17. echo -n "[$(date +%Y%m%d-%H%M%S)] Start: "
  18. pid=`ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
  19. if [ -z ${pid} ] ; then
  20. echo $
  21. . ${CATALINA_BASE}/bin/startup.sh
  22. else
  23. echo $' is running at pid: '${pid}
  24. fi
  25. }
  26.  
  27. stop() {
  28. if [ -z $ ]; then
  29. exit
  30. fi
  31.  
  32. echo -n "[$(date +%Y%m%d-%H%M%S)] Stop: "
  33. pid=`ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
  34. if [ -z $pid ] ; then
  35. echo $' is not running'
  36. else
  37. echo $' is running at pid:'${pid}
  38. . ${CATALINA_BASE}/bin/shutdown.sh
  39. sleep
  40. fi
  41.  
  42. pid=`ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
  43. if [ -z $pid ] ; then
  44. echo 'Done'
  45. else
  46. echo 'Still running, now killing with pid:'${pid}
  47. ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'|xargs kill -s
  48. fi
  49. }
  50.  
  51. restart() {
  52. stop $
  53. sleep
  54. start $
  55. }
  56.  
  57. deploy() {
  58. if [ -z $ ]; then
  59. echo $"Usage: $0 $1 deploy [module_name]"
  60. exit
  61. fi
  62. [ -f ${BUILD_FOLDER}/$.war ] || exit
  63.  
  64. stop $
  65. df -h
  66. echo ''
  67.  
  68. local BACKUP_FILENAME=$-$(date +%Y%m%d-%H%M).war
  69. echo -n "[$(date +%Y%m%d-%H%M%S)] Deploy: "
  70. echo -n "backup ${BACKUP_FILENAME}... "
  71. mv ${CATALINA_BASE}/webapps/$.war ${BUILD_FOLDER}/${BACKUP_FILENAME}
  72. echo -n "clean... "
  73. rm -rf ${CATALINA_BASE}/webapps/$
  74. echo -n "copy... "
  75. cp -f ${BUILD_FOLDER}/$.war ${CATALINA_BASE}/webapps/
  76. echo 'done'
  77.  
  78. start $
  79. }
  80.  
  81. jstat() {
  82. if [ -z $ ]; then
  83. exit
  84. fi
  85. local CATALINA_BASE=${TC_BASE}/$
  86. [ -d ${CATALINA_BASE} ] || exit
  87. echo -n "[$(date +%Y%m%d-%H%M%S)] jstat: "
  88. pid=`ps -ef|grep ${CATALINA_BASE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
  89. if [ -z $pid ] ; then
  90. echo $' is not running'
  91. else
  92. echo $' is running at pid:'${pid}
  93. ${JAVA_HOME}/bin/jmap -heap ${pid}
  94. echo ''
  95. ${JAVA_HOME}/bin/jstat -gcutil ${pid}
  96. fi
  97. }
  98.  
  99. if [ -z $ ]; then
  100. echo $"Usage: $0 [tomcat_location] {status|start|stop|restart|jstat|deploy} [module_name]"
  101. exit
  102. else
  103. target=${%/}
  104. fi
  105.  
  106. CATALINA_BASE=${TC_BASE}/$target
  107. [ -d ${CATALINA_BASE} ] || exit
  108.  
  109. case "$2" in
  110. status)
  111. $ $target
  112. ;;
  113. start)
  114. $ $target
  115. ;;
  116. stop)
  117. $ $target
  118. ;;
  119. restart)
  120. $ $target
  121. ;;
  122. jstat)
  123. $ $target
  124. ;;
  125. deploy)
  126. $ $target $
  127. ;;
  128. *)
  129. echo $"Usage: $0 [tomcat_location] {status|start|stop|restart|jstat|deploy} [module_name]"
  130. exit
  131. esac

对应的tomcat实例内部的startup.sh 和 shutdown.sh, 只需要配置jvm参数和tomcat源路径

startup.sh

  1. JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:MaxNewSize=512m -Djava.awt.headless=true"
  2. CATALINA_HOME=/opt/tomcat/apache-tomcat-8.0.
  3. . $CATALINA_HOME/bin/catalina.sh start

shutdown.sh

  1. CATALINA_HOME=/opt/tomcat/apache-tomcat-8.0.
  2. . $CATALINA_HOME/bin/catalina.sh stop

管理多tomcat实例的shell脚本的更多相关文章

  1. 实用脚本----Linux下Jdk和Tomcat自动安装shell脚本总结

    系统环境为:ubuntu 14.04 一.JDK 自动安装脚本 jdk自动安装bash shell脚本,截止今天(2014/10/15)亲测可用: sudo su #切换到root权限 mkdir / ...

  2. Dockerfile 构建后端tomcat应用并用shell脚本实现jenkins自动构建

    Dockerfile 文件构建docker镜像 FROM centos MAINTAINER zhaoweifeng "zh******tech.cn" ENV LANG en_U ...

  3. 快速部署tomcat项目的Shell脚本

    为了做集群测试,在每台机器上装了3个tomcat,每次发布项目的时候都要反复敲一些命令,重启tomcat之前先检查tomcat进程有没有停掉,没有还要手动kill该进程. 发布次数多了,操作就比较繁琐 ...

  4. [转] 快速部署Tomcat项目的Shell脚本

    为了做集群测试,在每台机器上装了3个tomcat,每次发布项目的时候都要反复敲一些命令,重启tomcat之前先检查tomcat进程有没有停掉,没有还要手动kill该进程. 发布次数多了,操作就比较繁琐 ...

  5. Linux 启动、停止、重启tomcat工具(Shell脚本)

    1.   启动 #!/bin/bash pids=`ps -ef | grep java | grep -w tomcat | awk '{print $2}'` #pids=`ps -ef | gr ...

  6. 【shell脚本实例】shell脚本统计单词频率、出现次数最多的n个单词

    1. 统计的对象words.txt,每个单词占一行(从简考虑了~) zjd@ubuntu:~/test$ cat word.txt used this count mysql count this u ...

  7. Shell脚本编写

    1.什么是Shell脚本 Shell脚本是利用 shell 的功能所写的一个程序 program,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面, 搭配正则表达式.管 ...

  8. Shell脚本的调试技术

    编程中必不可少的一点就是调试,Shell脚本以其强大的功能令人向往,当然,它的强大之处不只是体现在语言的实现功能上,更强大的是它的调试功能,下面,我将以实例讲解Shell脚本的调试技术. 下面是我所用 ...

  9. 【运维】Shell -- 快速上手Shell脚本

    1.Shell概述 shell脚本是利用shell的功能所写的一个[程序(program)].这个程序是使用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式.管道命令与数 ...

随机推荐

  1. FPC and Qt

    Introduction There are a number of Qt bindings available: Qt3 A QtC based binding by Theo Another Qt ...

  2. [转]使用互斥对象让程序只运行一次(delphi)

    使用互斥对象让程序只运行一次“怎么让我的程序在运行时不能重复打开?”经常在论坛上看到有朋友问这方面的问题.本文将比较详细的说明这一问题,并给出一个较为完善的解决方案. 尽管这已经不是一个新问题了,但这 ...

  3. 华清远见Linux设备驱动(每章小结)

    1.  linux设备驱动是以内核模块的方式而存在的,在具体的驱动开发中将驱动编译为模块具有很到的工程意义.因为如果将正在开发中的驱动编译如内核,而开发过程中会不断修改驱动代码,则需要不断的编译和重启 ...

  4. 一个简易Asp.net网站日志系统

    前不久在网站上看到了网站日志访问记录组件UserVisitLogsHelp开源了! 这篇博客感觉还不错,就把源码download了下来,学习一下,发现里面的代码书写和设计并不是很好,于是自己改了改.自 ...

  5. Gridview利用DataFormatString属性设置数据格式

    首 先把Gridview的AutoGenerateColumns属性设为False(默认是False),DataField选择相应的字段,特别需要注 意的是要把需要设置的字段的HtmlEncode属性 ...

  6. python 爬虫随机获取User-Agent

    可以有两种方法: 1.随机生成 首先安装 pip install fake-useragent import random from fake_useragent import UserAgent d ...

  7. 【Java】阿里巴巴Java开发手册(纪念版)

    下载地址:(最新纪念版 2017-11-30 V1.3.1) <阿里巴巴Java开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断的完善,系统化 ...

  8. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十五)Structured Streaming:同一个topic中包含一组数据的多个部分,按照key它们拼接为一条记录(以及遇到的问题)。

    需求: 目前kafka的topic上有一批数据,这些数据被分配到9个不同的partition中(就是发布时key:{m1,m2,m3,m4...m9},value:{records items}),m ...

  9. intel 汇编中断解释

    汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序.使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用. 显示服务 (Video Service: ...

  10. SSAS知识回放之订单数据分析

    1:目标 基于已经做好的DW,利用SSAS实现一个多维数据模型的创建,通过浏览可以简单的实现订单数据的分析 2:步骤 2.1:添加数据源 如下图所示,创建一个数据仓库层的数据源连接 2.2:添加数据源 ...