版权声明:本文为木偶人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