Tomcat daemon 脚本管理Tomcat

版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/53785044

Tomcat-daemon

此脚本用来通过daemon的方式管理tomcat服务的启动,停止,重启,查看状态和是啥查看日志,具体用法如下:

# /etc/init.d/tomcatall tomcat_port
tomcat_8081 is valilable !!!
Usage: /etc/init.d/tomcatall {start|stop|restart|status|log|kill}
service tomcat {8080|8081|..} {start|stop|restart|status|log|kill}
[root@aniu-video ~]# /etc/init.d/tomcatall tomcat_port args

#!/bin/bash  
# funtions: 
# chkconfig: 345 80 15  
# description: Multiple tomcats service management script.  
# author: vdevops
# Source function library.  
. /etc/rc.d/init.d/functions  

# tomcat name
TOMCAT_PORT=$1
TOMCAT=tomcat_$1
TOMCAT_HOME=/data/tomcats/${TOMCAT}
TOMCAT_BIN=${TOMCAT_HOME}/bin
#TOMCAT_LOG=${TOMCAT_HOME/logs/catalina.$(date +%Y-%m-%d).out
TOMCAT_LOG=${TOMCAT_HOME}/logs/catalina.out

#
# source function library.  
. /etc/rc.d/init.d/functions

if [ -f ${TOMCAT_BIN}/catalina.sh ];then
       echo "${TOMCAT} is valilable !!!"  
     else
       echo "${TOMCAT} not valilable !!!"
       exit
fi

RETVAL=$?  

start(){
        checkrun
        if [ $RETVAL -eq 0 ]; then  
                echo "-- Starting ${TOMCAT}... --"  
                bash ${TOMCAT_BIN}/startup.sh  
                touch /var/lock/subsys/${TOMCAT_PORT}
                checklog 
                status
        else  
                echo "-- ${TOMCAT} already running !"  
        fi  
}  

# 停止某一台tomcat,如果是重启则带re参数,表示不查看日志,等待启动时再提示查看  
stop(){
        checkrun  
        if [ $RETVAL -eq 1 ]; then  
                echo "-- Shutting down tomcat..."  
                ${TOMCAT_BIN}/shutdown.sh  
                if [ "$1" != "re" ]; then
        checklog
                else
                  sleep 5
                fi
                rm -rf /var/lock/subsys/${TOMCAT_PORT} 
                status
           else  
                echo "-- ${TOMCAT} not running"  
        fi  
      }  

status(){
        checkrun
        if [ $RETVAL -eq 1 ]; then
                echo -n "-- ${TOMCAT} ( pid "  
                ps ax --width=1000 | grep ${TOMCAT_PORT}| grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'
                              echo -n ") is running..."  
                echo  
          else
                echo "-- ${TOMCAT} is stopped"  
        fi
        #echo "---------------------------------------------"  
}

# 查看tomcat日志,带vl参数
log(){
        status
        checklog yes
}

# 如果tomcat正在运行,强行杀死tomcat进程,关闭tomcat
kill(){
        checkrun
        if [ $RETVAL -eq 1 ]; then
            read -p "-- Do you really want to kill ${TOMCAT_PORT} progress?[no])" answer
            case $answer in
                Y|y|YES|yes|Yes)
                    ps ax --width=1000 | grep ${TOMCAT_PORT} | grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'| xargs kill -9  
                    status
                ;;
                *);;
            esac
        else
            echo "-- exist with ${TOMCAT_PORT} still running..."
        fi
     }   

checkrun(){  
           ps ax --width=1000 |grep ${TOMCAT_PORT}| grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 "\n"}' | wc -l > /var/run/tomcat_process_count
           read line < /var/run/tomcat_process_count 
           if [ $line -gt 0 ]; then  
                  RETVAL=1  
                  return $RETVAL  
             else  
                  RETVAL=0  
                  return $RETVAL  
           fi  
}  
# 如果是直接查看日志viewlog,则不提示输入[yes],否则就是被stop和start调用,需提示是否查看日志
checklog(){
           answer=$1
           if [ "$answer" != "yes" ]; then
              read -p "-- See Catalina.out log to check $2 status?[yes])" answer
           fi
           case $answer in
                           Y|y|YES|yes|Yes|"")
                           tail -f ${TOMCAT_LOG}
                                            ;;
                                            *)
                                   #    status
                                   #    exit 0
                                            ;;
           esac
          }

checkexist(){
             if [ ! -d ${TOMCAT_HOME} ]; then
                 echo "-- ${TOMCAT_HOME} does not exist."
                 exit 0
             fi
            }      
case "$2" in  
            start)  
                 checkexist
                 start  
                 exit 0
                 ;;  
             stop)  
                 checkexist
                 stop  
                 exit 0
                 ;;  
          restart)  
                 checkexist
                 stop re 
                 start 
                 exit 0
                 ;;  
           status)  
                 checkexist
                 status  
        #${TOMCAT_BIN}/catalina.sh version  
                 exit 0
                 ;;  
             log)
                checkexist
                log
                exit 0
                ;;
            kill)
                checkexist
                status
                kill
                exit 0
                ;;
               *)  
        echo "Usage: $0 {start|stop|restart|status|log|kill}"  
        echo "service tomcat {8080|8081|..} {start|stop|restart|status|log|kill}"  
esac  
exit 0

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏趣谈编程

如何实现分布式锁?

Tomcat是这个系统的核心组成部分, 每当有用户请求过来,Tomcat就会从线程池里找个线程来处理,有的执行登录,有的查看购物车,有的下订单,看着属下们尽心尽...

18950
来自专栏技术探索

dubbo源码解析2-项目结构

远程通讯模块:相当于 Dubbo 协议的实现,如果 RPC 用 RMI协议则不需要使用此包。

13440
来自专栏波波烤鸭

SpringBoot核心【基本配置】

  SpringBoot项目通常都有一个名为*Application的入口类,入口类中有一个main方法,这个main方法就是一个标准的java应用的入口方法,...

17430
来自专栏技术探索

Tomcat特殊字符报400(The valid characters are defined in RFC 7230 and RFC 3986)

Tomcat在 7.0.73, 8.0.39, 8.5.7 等版本后(详情:https://stackoverflow.com/questions/410536...

39940
来自专栏测试驿栈

tomcat监控工具-probe

tomcat probe是一个开源的监控tomcat运行状态工具,可以实时查看项目运行的情况,监控内存,cpu,日志等等

32020
来自专栏服务器优惠介绍

【新手教程】手把手教你搭建腾讯云服务器,图文详细教程

    暑假期间,愁着无聊但也不能荒废学业吧,毕竟以后想靠技术混口饭吃!为了实施自己的计划,特地挑了一个便宜的云服务器来用作自己的后台;这不是学生狗没钱嘛,所以...

1.6K40
来自专栏波波烤鸭

IntelliJ IDEA(2019)之Web项目创建

  上篇文章介绍了idea的安装及普通java项目的使用,本文来介绍下web项目的创建及相关操作

3.6K50
来自专栏程序员的成长之路

再见,Eclipse。

开始我写 Java 程序,用的并不是 Eclipse,而是用的一款叫做 JBuilder 的工具。当时使用这个工具的时候,我已经觉得非常好用了,因为在此之前,我...

14130
来自专栏技术探索

使用Spring Boot、Multipartfile上传文件路径错误问题

java.io.IOException: java.io.FileNotFoundException: /tmp/tomcat/…/tmp/files/xxx....

2.7K30
来自专栏波波烤鸭

IntelliJ IDEA(2019)创建maven项目

  前面介绍完了idea中创建普通java项目和web项目。本文介绍下在idea中创建maven项目。

5.4K30

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励