前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >管理Tomcat服务的Daemon脚本

管理Tomcat服务的Daemon脚本

作者头像
shaonbean
发布2019-05-26 09:37:31
4520
发布2019-05-26 09:37:31
举报
文章被收录于专栏:运维前线运维前线

版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://cloud.tencent.com/developer/article/1434696

一、脚本功能

tomcat 的启动,重启,实时查看日志

#!/bin/bash

funtions:

chkconfig: 345 80 15

description: Multiple tomcats service management script.

author: shaonbean

Source function library.

. /etc/rc.d/init.d/functions

tomcat name

TOMCAT_PORT=$1

TOMCAT=tomcat_$1

TOMCAT_HOME=/opt/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

代码语言:txt
复制
    echo "${TOMCAT} is valilable !!!"  
代码语言:txt
复制
  else
代码语言:txt
复制
    echo "${TOMCAT} not valilable !!!"
代码语言:txt
复制
    exit

fi

RETVAL=$?

start(){

代码语言:txt
复制
     checkrun
代码语言:txt
复制
     if [ $RETVAL -eq 0 ]; then  
代码语言:txt
复制
             echo "-- Starting ${TOMCAT}... --"  
代码语言:txt
复制
             bash ${TOMCAT\_BIN}/startup.sh  
代码语言:txt
复制
             touch /var/lock/subsys/${TOMCAT\_PORT}
代码语言:txt
复制
             checklog 
代码语言:txt
复制
             status
代码语言:txt
复制
     else  
代码语言:txt
复制
             echo "-- ${TOMCAT} already running !"  
代码语言:txt
复制
     fi  

}

停止某一台tomcat,如果是重启则带re参数,表示不查看日志,等待启动时再提示查看

stop(){

代码语言:txt
复制
     checkrun  
代码语言:txt
复制
     if [ $RETVAL -eq 1 ]; then  
代码语言:txt
复制
             echo "-- Shutting down tomcat..."  
代码语言:txt
复制
             ${TOMCAT\_BIN}/shutdown.sh  
代码语言:txt
复制
             if [ "$1" != "re" ]; then
代码语言:txt
复制
     checklog
代码语言:txt
复制
             else
代码语言:txt
复制
               sleep 5
代码语言:txt
复制
             fi
代码语言:txt
复制
             rm -rf /var/lock/subsys/${TOMCAT\_PORT} 
代码语言:txt
复制
             status
代码语言:txt
复制
        else  
代码语言:txt
复制
             echo "-- ${TOMCAT} not running"  
代码语言:txt
复制
     fi  
代码语言:txt
复制
   }  

status(){

代码语言:txt
复制
     checkrun
代码语言:txt
复制
     if [ $RETVAL -eq 1 ]; then
代码语言:txt
复制
             echo -n "-- ${TOMCAT} ( pid "  
代码语言:txt
复制
             ps ax --width=1000 | grep ${TOMCAT\_PORT}| grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'
代码语言:txt
复制
                           echo -n ") is running..."  
代码语言:txt
复制
             echo  
代码语言:txt
复制
       else
代码语言:txt
复制
             echo "-- ${TOMCAT} is stopped"  
代码语言:txt
复制
     fi
代码语言:txt
复制
     #echo "---------------------------------------------"  

}

查看tomcat日志,带vl参数

log(){

代码语言:txt
复制
     status
代码语言:txt
复制
     checklog yes

}

如果tomcat正在运行,强行杀死tomcat进程,关闭tomcat

kill(){

代码语言:txt
复制
     checkrun
代码语言:txt
复制
     if [ $RETVAL -eq 1 ]; then
代码语言:txt
复制
         read -p "-- Do you really want to kill ${TOMCAT\_PORT} progress?[no])" answer
代码语言:txt
复制
         case $answer in
代码语言:txt
复制
             Y|y|YES|yes|Yes)
代码语言:txt
复制
                 ps ax --width=1000 | grep ${TOMCAT\_PORT} | grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'| xargs kill -9  
代码语言:txt
复制
                 status
代码语言:txt
复制
             ;;
代码语言:txt
复制
             \*);;
代码语言:txt
复制
         esac
代码语言:txt
复制
     else
代码语言:txt
复制
         echo "-- exist with ${TOMCAT\_PORT} still running..."
代码语言:txt
复制
     fi
代码语言:txt
复制
  }   

checkrun(){

代码语言:txt
复制
        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
代码语言:txt
复制
        read line < /var/run/tomcat\_process\_count 
代码语言:txt
复制
        if [ $line -gt 0 ]; then  
代码语言:txt
复制
               RETVAL=1  
代码语言:txt
复制
               return $RETVAL  
代码语言:txt
复制
          else  
代码语言:txt
复制
               RETVAL=0  
代码语言:txt
复制
               return $RETVAL  
代码语言:txt
复制
        fi  

}

如果是直接查看日志viewlog,则不提示输入yes,否则就是被stop和start调用,需提示是否查看日志

checklog(){

代码语言:txt
复制
        answer=$1
代码语言:txt
复制
        if [ "$answer" != "yes" ]; then
代码语言:txt
复制
           read -p "-- See Catalina.out log to check $2 status?[yes])" answer
代码语言:txt
复制
        fi
代码语言:txt
复制
        case $answer in
代码语言:txt
复制
                        Y|y|YES|yes|Yes|"")
代码语言:txt
复制
                        tail -f ${TOMCAT\_LOG}
代码语言:txt
复制
                                         ;;
代码语言:txt
复制
                                         \*)
代码语言:txt
复制
                                #    status
代码语言:txt
复制
                                #    exit 0
代码语言:txt
复制
                                         ;;
代码语言:txt
复制
        esac
代码语言:txt
复制
       }

checkexist(){

代码语言:txt
复制
          if [ ! -d ${TOMCAT\_HOME} ]; then
代码语言:txt
复制
              echo "-- ${TOMCAT\_HOME} does not exist."
代码语言:txt
复制
              exit 0
代码语言:txt
复制
          fi
代码语言:txt
复制
         }      

case "$2" in

代码语言:txt
复制
         start)  
代码语言:txt
复制
              checkexist
代码语言:txt
复制
              start  
代码语言:txt
复制
              exit 0
代码语言:txt
复制
              ;;  
代码语言:txt
复制
          stop)  
代码语言:txt
复制
              checkexist
代码语言:txt
复制
              stop  
代码语言:txt
复制
              exit 0
代码语言:txt
复制
              ;;  
代码语言:txt
复制
       restart)  
代码语言:txt
复制
              checkexist
代码语言:txt
复制
              stop re 
代码语言:txt
复制
              start 
代码语言:txt
复制
              exit 0
代码语言:txt
复制
              ;;  
代码语言:txt
复制
        status)  
代码语言:txt
复制
              checkexist
代码语言:txt
复制
              status  
代码语言:txt
复制
     #${TOMCAT\_BIN}/catalina.sh version  
代码语言:txt
复制
              exit 0
代码语言:txt
复制
              ;;  
代码语言:txt
复制
          log)
代码语言:txt
复制
             checkexist
代码语言:txt
复制
             log
代码语言:txt
复制
             exit 0
代码语言:txt
复制
             ;;
代码语言:txt
复制
         kill)
代码语言:txt
复制
             checkexist
代码语言:txt
复制
             status
代码语言:txt
复制
             kill
代码语言:txt
复制
             exit 0
代码语言:txt
复制
             ;;
代码语言:txt
复制
            \*)  
代码语言:txt
复制
     echo "Usage: $0 {start|stop|restart|status|log|kill}"  
代码语言:txt
复制
     echo "service tomcat {8080|8081|..} {start|stop|restart|status|log|kill}"  

esac

exit 0

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年10月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、脚本功能
  • tomcat 的启动,重启,实时查看日志
  • funtions:
  • chkconfig: 345 80 15
  • description: Multiple tomcats service management script.
  • author: shaonbean
  • Source function library.
  • tomcat name
  • source function library.
  • 停止某一台tomcat,如果是重启则带re参数,表示不查看日志,等待启动时再提示查看
  • 查看tomcat日志,带vl参数
  • 如果tomcat正在运行,强行杀死tomcat进程,关闭tomcat
  • 如果是直接查看日志viewlog,则不提示输入yes,否则就是被stop和start调用,需提示是否查看日志
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档