tomcat日志分割

1、下载(最新版本)并解压,cd进入安装目录

    #  wget http://cronolog.org/download/cronolog-1.6.2.tar.gz

    # tar zxvf cronolog-1.6.2.tar.gz
    # cd cronolog-1.6.2

2、运行安装
    # ./configure
    # make
    # make install

3、查看cronolog安装后所在目录(验证安装是否成功)
    # which cronolog
   一般情况下显示为:/usr/local/sbin/cronolog

要想分割tomcat7的catalina.out,需作如下工作:

进入Tomcat的bin目录,打开catalina.sh文件,一般我们修改下面行中的内容(因为我们一般不会在-security条件下运行),

(1)if [ -z "$CATALINA_OUT" ] ; then
  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out

fi
改为:
if [ -z "$CATALINA_OUT" ] ; then
  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out
fi
(2)touch "$CATALINA_OUT"  
if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    eval "$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" 
      -Djava.security.manager 
      -Djava.security.policy=="$CATALINA_BASE/conf/catalina.policy" 
      -Dcatalina.base="$CATALINA_BASE" 
      -Dcatalina.home="$CATALINA_HOME" 
      -Djava.io.tmpdir="$CATALINA_TMPDIR" 
      org.apache.catalina.startup.Bootstrap "$@" start 
      >> "$CATALINA_OUT" 2>&1 "&"      
  else
    eval "$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" 
      -Dcatalina.base="$CATALINA_BASE" 
      -Dcatalina.home="$CATALINA_HOME" 
      -Djava.io.tmpdir="$CATALINA_TMPDIR" 
      org.apache.catalina.startup.Bootstrap "$@" start 
      >> "$CATALINA_OUT" 2>&1 "&"
       

  fi

  if [ ! -z "$CATALINA_PID" ]; then
    echo $! > "$CATALINA_PID"
  fi
改为:
#  touch "$CATALINA_OUT"  
if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    eval "$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" 
      -Djava.security.manager 
      -Djava.security.policy=="$CATALINA_BASE/conf/catalina.policy" 
      -Dcatalina.base="$CATALINA_BASE" 
      -Dcatalina.home="$CATALINA_HOME" 
      -Djava.io.tmpdir="$CATALINA_TMPDIR" 
      org.apache.catalina.startup.Bootstrap "$@" start 2>&1 
      | /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
  else
    eval "$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" 
      -Dcatalina.base="$CATALINA_BASE" 
      -Dcatalina.home="$CATALINA_HOME" 
      -Djava.io.tmpdir="$CATALINA_TMPDIR" 
       org.apache.catalina.startup.Bootstrap "$@" start 2>&1 
       | /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &

  fi

  if [ ! -z "$CATALINA_PID" ]; then
    echo $! > "$CATALINA_PID"
  fi

配置完成的catalina.out

#!/bin/sh

# Licensed to the Apache Software Foundation (ASF) under one or more

# contributor license agreements.  See the NOTICE file distributed with

# this work for additional information regarding copyright ownership.

# The ASF licenses this file to You under the Apache License, Version 2.0

# (the "License"); you may not use this file except in compliance with

# the License.  You may obtain a copy of the License at

#

#     http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.

# -----------------------------------------------------------------------------

# Control Script for the CATALINA Server

#

# Environment Variable Prerequisites

#

#   Do not set the variables in this script. Instead put them into a script

#   setenv.sh in CATALINA_BASE/bin to keep your customizations separate.

#

#   CATALINA_HOME   May point at your Catalina "build" directory.

#

#   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions

#                   of a Catalina installation.  If not present, resolves to

#                   the same directory that CATALINA_HOME points to.

#

#   CATALINA_OUT    (Optional) Full path to a file where stdout and stderr

#                   will be redirected.

#                   Default is $CATALINA_BASE/logs/catalina.out

#

#   CATALINA_OPTS   (Optional) Java runtime options used when the "start",

#                   "run" or "debug" command is executed.

#                   Include here and not in JAVA_OPTS all options, that should

#                   only be used by Tomcat itself, not by the stop process,

#                   the version command etc.

#                   Examples are heap size, GC logging, JMX ports etc.

#

#   CATALINA_TMPDIR (Optional) Directory path location of temporary directory

#                   the JVM should use (java.io.tmpdir).  Defaults to

#                   $CATALINA_BASE/temp.

#

#   JAVA_HOME       Must point at your Java Development Kit installation.

#                   Required to run the with the "debug" argument.

#

#   JRE_HOME        Must point at your Java Runtime installation.

#                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME

#                   are both set, JRE_HOME is used.

#

#   JAVA_OPTS       (Optional) Java runtime options used when any command

#                   is executed.

#                   Include here and not in CATALINA_OPTS all options, that

#                   should be used by Tomcat and also by the stop process,

#                   the version command etc.

#                   Most options should go into CATALINA_OPTS.

#

#   JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories

#                   containing some jars in order to allow replacement of APIs

#                   created outside of the JCP (i.e. DOM and SAX from W3C).

#                   It can also be used to update the XML parser implementation.

#                   Defaults to $CATALINA_HOME/endorsed.

#

#   JPDA_TRANSPORT  (Optional) JPDA transport used when the "jpda start"

#                   command is executed. The default is "dt_socket".

#

#   JPDA_ADDRESS    (Optional) Java runtime options used when the "jpda start"

#                   command is executed. The default is localhost:8000.

#

#   JPDA_SUSPEND    (Optional) Java runtime options used when the "jpda start"

#                   command is executed. Specifies whether JVM should suspend

#                   execution immediately after startup. Default is "n".

#

#   JPDA_OPTS       (Optional) Java runtime options used when the "jpda start"

#                   command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,

#                   and JPDA_SUSPEND are ignored. Thus, all required jpda

#                   options MUST be specified. The default is:

#

#                   -agentlib:jdwp=transport=$JPDA_TRANSPORT,

#                       address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND

#

#   CATALINA_PID    (Optional) Path of the file which should contains the pid

#                   of the catalina startup java process, when start (fork) is

#                   used

#

#   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file

#                   Example (all one line)

#                   LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"

#

#   LOGGING_MANAGER (Optional) Override Tomcat's logging manager

#                   Example (all one line)

#                   LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

# -----------------------------------------------------------------------------

# OS specific support.  $var _must_ be set to either true or false.

cygwin=false

darwin=false

os400=false

case "`uname`" in

CYGWIN*) cygwin=true;;

Darwin*) darwin=true;;

OS400*) os400=true;;

esac

# resolve links - $0 may be a softlink

PRG="$0"

while [ -h "$PRG" ]; do

  ls=`ls -ld "$PRG"`

  link=`expr "$ls" : '.*-> (.*)$'`

  if expr "$link" : '/.*' > /dev/null; then

    PRG="$link"

  else

    PRG=`dirname "$PRG"`/"$link"

  fi

done

# Get standard environment variables

PRGDIR=`dirname "$PRG"`

# Only set CATALINA_HOME if not already set

[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`

# Copy CATALINA_BASE from CATALINA_HOME if not already set

[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"

# Ensure that neither CATALINA_HOME nor CATALINA_BASE contains a colon

# as this is used as the separator in the classpath and Java provides no

# mechanism for escaping if the same character appears in the path.

case $CATALINA_HOME in

  *:*) echo "Using CATALINA_HOME:   $CATALINA_HOME";

       echo "Unable to start as CATALINA_HOME contains a colon (:) character";

       exit 1;

esac

case $CATALINA_BASE in

  *:*) echo "Using CATALINA_BASE:   $CATALINA_BASE";

       echo "Unable to start as CATALINA_BASE contains a colon (:) character";

       exit 1;

esac

# Ensure that any user defined CLASSPATH variables are not used on startup,

# but allow them to be specified in setenv.sh, in rare case when it is needed.

CLASSPATH=

if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then

  . "$CATALINA_BASE/bin/setenv.sh"

elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then

  . "$CATALINA_HOME/bin/setenv.sh"

fi

# For Cygwin, ensure paths are in UNIX format before anything is touched

if $cygwin; then

  [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`

  [ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`

  [ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`

  [ -n "$CATALINA_BASE" ] && CATALINA_BASE=`cygpath --unix "$CATALINA_BASE"`

  [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`

fi

# For OS400

if $os400; then

  # Set job priority to standard for interactive (interactive - 6) by using

  # the interactive priority - 6, the helper threads that respond to requests

  # will be running at the same priority as interactive jobs.

  COMMAND='chgjob job('$JOBNAME') runpty(6)'

  system $COMMAND

  # Enable multi threading

  export QIBM_MULTI_THREADED=Y

fi

# Get standard Java environment variables

if $os400; then

  # -r will Only work on the os400 if the files are:

  # 1. owned by the user

  # 2. owned by the PRIMARY group of the user

  # this will not work if the user belongs in secondary groups

  . "$CATALINA_HOME"/bin/setclasspath.sh

else

  if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then

    . "$CATALINA_HOME"/bin/setclasspath.sh

  else

    echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"

    echo "This file is needed to run this program"

    exit 1

  fi

fi

# Add on extra jar files to CLASSPATH

if [ ! -z "$CLASSPATH" ] ; then

  CLASSPATH="$CLASSPATH":

fi

CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar

if [ -z "$CATALINA_OUT" ] ; then

  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out

fi

if [ -z "$CATALINA_TMPDIR" ] ; then

  # Define the java.io.tmpdir to use for Catalina

  CATALINA_TMPDIR="$CATALINA_BASE"/temp

fi

# Add tomcat-juli.jar to classpath

# tomcat-juli.jar can be over-ridden per instance

if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then

  CLASSPATH=$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar

else

  CLASSPATH=$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar

fi

# Bugzilla 37848: When no TTY is available, don't output to console

have_tty=0

if [ "`tty`" != "not a tty" ]; then

    have_tty=1

fi

# For Cygwin, switch paths to Windows format before running java

if $cygwin; then

  JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`

  JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"`

  CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"`

  CATALINA_BASE=`cygpath --absolute --windows "$CATALINA_BASE"`

  CATALINA_TMPDIR=`cygpath --absolute --windows "$CATALINA_TMPDIR"`

  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`

  JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`

fi

# Set juli LogManager config file if it is present and an override has not been issued

if [ -z "$LOGGING_CONFIG" ]; then

  if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then

    LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"

  else

    # Bugzilla 45585

    LOGGING_CONFIG="-Dnop"

  fi

fi

if [ -z "$LOGGING_MANAGER" ]; then

  LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

fi

# Uncomment the following line to make the umask available when using the

# org.apache.catalina.security.SecurityListener

#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"

# ----- Execute The Requested Command -----------------------------------------

# Bugzilla 37848: only output this if we have a TTY

if [ $have_tty -eq 1 ]; then

  echo "Using CATALINA_BASE:   $CATALINA_BASE"

  echo "Using CATALINA_HOME:   $CATALINA_HOME"

  echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"

  if [ "$1" = "debug" ] ; then

    echo "Using JAVA_HOME:       $JAVA_HOME"

  else

    echo "Using JRE_HOME:        $JRE_HOME"

  fi

  echo "Using CLASSPATH:       $CLASSPATH"

  if [ ! -z "$CATALINA_PID" ]; then

    echo "Using CATALINA_PID:    $CATALINA_PID"

  fi

fi

if [ "$1" = "jpda" ] ; then

  if [ -z "$JPDA_TRANSPORT" ]; then

    JPDA_TRANSPORT="dt_socket"

  fi

  if [ -z "$JPDA_ADDRESS" ]; then

    JPDA_ADDRESS="localhost:8000"

  fi

  if [ -z "$JPDA_SUSPEND" ]; then

    JPDA_SUSPEND="n"

  fi

  if [ -z "$JPDA_OPTS" ]; then

    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"

  fi

  CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS"

  shift

fi

if [ "$1" = "debug" ] ; then

  if $os400; then

    echo "Debug command not available on OS400"

    exit 1

  else

    shift

    if [ "$1" = "-security" ] ; then

      if [ $have_tty -eq 1 ]; then

        echo "Using Security Manager"

      fi

      shift

      exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS

        -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH"

        -sourcepath "$CATALINA_HOME"/../../java

        -Djava.security.manager

        -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy

        -Dcatalina.base="$CATALINA_BASE"

        -Dcatalina.home="$CATALINA_HOME"

        -Djava.io.tmpdir="$CATALINA_TMPDIR"

        org.apache.catalina.startup.Bootstrap "$@" start

    else

      exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS

        -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH"

        -sourcepath "$CATALINA_HOME"/../../java

        -Dcatalina.base="$CATALINA_BASE"

        -Dcatalina.home="$CATALINA_HOME"

        -Djava.io.tmpdir="$CATALINA_TMPDIR"

        org.apache.catalina.startup.Bootstrap "$@" start

    fi

  fi

elif [ "$1" = "run" ]; then

  shift

  if [ "$1" = "-security" ] ; then

    if [ $have_tty -eq 1 ]; then

      echo "Using Security Manager"

    fi

    shift

    eval exec ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS

      -Djava.endorsed.dirs=""$JAVA_ENDORSED_DIRS"" -classpath ""$CLASSPATH""

      -Djava.security.manager

      -Djava.security.policy==""$CATALINA_BASE/conf/catalina.policy""

      -Dcatalina.base=""$CATALINA_BASE""

      -Dcatalina.home=""$CATALINA_HOME""

      -Djava.io.tmpdir=""$CATALINA_TMPDIR""

      org.apache.catalina.startup.Bootstrap "$@" start

  else

    eval exec ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS

      -Djava.endorsed.dirs=""$JAVA_ENDORSED_DIRS"" -classpath ""$CLASSPATH""

      -Dcatalina.base=""$CATALINA_BASE""

      -Dcatalina.home=""$CATALINA_HOME""

      -Djava.io.tmpdir=""$CATALINA_TMPDIR""

      org.apache.catalina.startup.Bootstrap "$@" start

  fi

elif [ "$1" = "start" ] ; then

  if [ ! -z "$CATALINA_PID" ]; then

    if [ -f "$CATALINA_PID" ]; then

      if [ -s "$CATALINA_PID" ]; then

        echo "Existing PID file found during start."

        if [ -r "$CATALINA_PID" ]; then

          PID=`cat "$CATALINA_PID"`

          ps -p $PID >/dev/null 2>&1

          if [ $? -eq 0 ] ; then

            echo "Tomcat appears to still be running with PID $PID. Start aborted."

            echo "If the following process is not a Tomcat process, remove the PID file and try again:"

            ps -f -p $PID

            exit 1

          else

            echo "Removing/clearing stale PID file."

            rm -f "$CATALINA_PID" >/dev/null 2>&1

            if [ $? != 0 ]; then

              if [ -w "$CATALINA_PID" ]; then

                cat /dev/null > "$CATALINA_PID"

              else

                echo "Unable to remove or clear stale PID file. Start aborted."

                exit 1

              fi

            fi

          fi

        else

          echo "Unable to read PID file. Start aborted."

          exit 1

        fi

      else

        rm -f "$CATALINA_PID" >/dev/null 2>&1

        if [ $? != 0 ]; then

          if [ ! -w "$CATALINA_PID" ]; then

            echo "Unable to remove or write to empty PID file. Start aborted."

            exit 1

          fi

        fi

      fi

    fi

  fi

  shift

#  touch "$CATALINA_OUT"

  if [ "$1" = "-security" ] ; then

    if [ $have_tty -eq 1 ]; then

      echo "Using Security Manager"

    fi

    shift

    eval ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS

      -Djava.endorsed.dirs=""$JAVA_ENDORSED_DIRS"" -classpath ""$CLASSPATH""

      -Djava.security.manager

      -Djava.security.policy==""$CATALINA_BASE/conf/catalina.policy""

      -Dcatalina.base=""$CATALINA_BASE""

      -Dcatalina.home=""$CATALINA_HOME""

      -Djava.io.tmpdir=""$CATALINA_TMPDIR""

      org.apache.catalina.startup.Bootstrap "$@" start 2>&1

      | /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &

  else

    eval ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS

      -Djava.endorsed.dirs=""$JAVA_ENDORSED_DIRS"" -classpath ""$CLASSPATH""

      -Dcatalina.base=""$CATALINA_BASE""

      -Dcatalina.home=""$CATALINA_HOME""

      -Djava.io.tmpdir=""$CATALINA_TMPDIR""

      org.apache.catalina.startup.Bootstrap "$@" start 2>&1

       | /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &

  fi

  if [ ! -z "$CATALINA_PID" ]; then

    echo $! > "$CATALINA_PID"

  fi

  echo "Tomcat started."

elif [ "$1" = "stop" ] ; then

  shift

  SLEEP=5

  if [ ! -z "$1" ]; then

    echo $1 | grep "[^0-9]" >/dev/null 2>&1

    if [ $? -gt 0 ]; then

      SLEEP=$1

      shift

    fi

  fi

  FORCE=0

  if [ "$1" = "-force" ]; then

    shift

    FORCE=1

  fi

  if [ ! -z "$CATALINA_PID" ]; then

    if [ -f "$CATALINA_PID" ]; then

      if [ -s "$CATALINA_PID" ]; then

        kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1

        if [ $? -gt 0 ]; then

          echo "PID file found but no matching process was found. Stop aborted."

          exit 1

        fi

      else

        echo "PID file is empty and has been ignored."

      fi

    else

      echo "$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted."

      exit 1

    fi

  fi

  eval ""$_RUNJAVA"" $LOGGING_MANAGER $JAVA_OPTS

    -Djava.endorsed.dirs=""$JAVA_ENDORSED_DIRS"" -classpath ""$CLASSPATH""

    -Dcatalina.base=""$CATALINA_BASE""

    -Dcatalina.home=""$CATALINA_HOME""

    -Djava.io.tmpdir=""$CATALINA_TMPDIR""

    org.apache.catalina.startup.Bootstrap "$@" stop

  # stop failed. Shutdown port disabled? Try a normal kill.

  if [ $? != 0 ]; then

    if [ ! -z "$CATALINA_PID" ]; then

      echo "The stop command failed. Attempting to signal the process to stop through OS signal."

      kill -15 `cat "$CATALINA_PID"` >/dev/null 2>&1

    fi

  fi

  if [ ! -z "$CATALINA_PID" ]; then

    if [ -f "$CATALINA_PID" ]; then

      while [ $SLEEP -ge 0 ]; do

        kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1

        if [ $? -gt 0 ]; then

          rm -f "$CATALINA_PID" >/dev/null 2>&1

          if [ $? != 0 ]; then

            if [ -w "$CATALINA_PID" ]; then

              cat /dev/null > "$CATALINA_PID"

              # If Tomcat has stopped don't try and force a stop with an empty PID file

              FORCE=0

            else

              echo "The PID file could not be removed or cleared."

            fi

          fi

          echo "Tomcat stopped."

          break

        fi

        if [ $SLEEP -gt 0 ]; then

          sleep 1

        fi

        if [ $SLEEP -eq 0 ]; then

          echo "Tomcat did not stop in time."

          if [ $FORCE -eq 0 ]; then

            echo "PID file was not removed."

          fi

          echo "To aid diagnostics a thread dump has been written to standard out."

          kill -3 `cat "$CATALINA_PID"`

        fi

        SLEEP=`expr $SLEEP - 1 `

      done

    fi

  fi

  KILL_SLEEP_INTERVAL=5

  if [ $FORCE -eq 1 ]; then

    if [ -z "$CATALINA_PID" ]; then

      echo "Kill failed: $CATALINA_PID not set"

    else

      if [ -f "$CATALINA_PID" ]; then

        PID=`cat "$CATALINA_PID"`

        echo "Killing Tomcat with the PID: $PID"

        kill -9 $PID

        while [ $KILL_SLEEP_INTERVAL -ge 0 ]; do

            kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1

            if [ $? -gt 0 ]; then

                rm -f "$CATALINA_PID" >/dev/null 2>&1

                if [ $? != 0 ]; then

                    if [ -w "$CATALINA_PID" ]; then

                        cat /dev/null > "$CATALINA_PID"

                    else

                        echo "The PID file could not be removed."

                    fi

                fi

                echo "The Tomcat process has been killed."

                break

            fi

            if [ $KILL_SLEEP_INTERVAL -gt 0 ]; then

                sleep 1

            fi

            KILL_SLEEP_INTERVAL=`expr $KILL_SLEEP_INTERVAL - 1 `

        done

        if [ $KILL_SLEEP_INTERVAL -lt 0 ]; then

            echo "Tomcat has not been killed completely yet. The process might be waiting on some system call or might be UNINTERRUPTIBLE."

        fi

      fi

    fi

  fi

elif [ "$1" = "configtest" ] ; then

    eval ""$_RUNJAVA"" $LOGGING_MANAGER $JAVA_OPTS

      -Djava.endorsed.dirs=""$JAVA_ENDORSED_DIRS"" -classpath ""$CLASSPATH""

      -Dcatalina.base=""$CATALINA_BASE""

      -Dcatalina.home=""$CATALINA_HOME""

      -Djava.io.tmpdir=""$CATALINA_TMPDIR""

      org.apache.catalina.startup.Bootstrap configtest

    result=$?

    if [ $result -ne 0 ]; then

        echo "Configuration error detected!"

    fi

    exit $result

elif [ "$1" = "version" ] ; then

    "$_RUNJAVA"   

      -classpath "$CATALINA_HOME/lib/catalina.jar"

      org.apache.catalina.util.ServerInfo

else

  echo "Usage: catalina.sh ( commands ... )"

  echo "commands:"

  if $os400; then

    echo "  debug             Start Catalina in a debugger (not available on OS400)"

    echo "  debug -security   Debug Catalina with a security manager (not available on OS400)"

  else

    echo "  debug             Start Catalina in a debugger"

    echo "  debug -security   Debug Catalina with a security manager"

  fi

  echo "  jpda start        Start Catalina under JPDA debugger"

  echo "  run               Start Catalina in the current window"

  echo "  run -security     Start in the current window with security manager"

  echo "  start             Start Catalina in a separate window"

  echo "  start -security   Start in a separate window with security manager"

  echo "  stop              Stop Catalina, waiting up to 5 seconds for the process to end"

  echo "  stop n            Stop Catalina, waiting up to n seconds for the process to end"

  echo "  stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running"

  echo "  stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running"

  echo "  configtest        Run a basic syntax check on server.xml - check exit code for result"

  echo "  version           What version of tomcat are you running?"

  echo "Note: Waiting for the process to end and use of the -force option require that $CATALINA_PID is defined"

  exit 1

fi

原文地址:https://www.cnblogs.com/chuhongyun/p/11399742.html