Tomcat start/stop script

http://blog.valotas.com/2011/05/tomcat-initd-script.html

http://blog.botha.us/sarel/?p=101

#!/bin/bash
#
# tomcat7     This shell script takes care of starting and stopping Tomcat
#
# chkconfig: - 80 20
#
### BEGIN INIT INFO
# Provides: tomcat7
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Description: Release implementation for Servlet 2.5 and JSP 2.1
# Short-Description: start and stop tomcat
### END INIT INFO

## Source function library.
#. /etc/rc.d/init.d/functions
export JAVA_HOME=/usr/java/default
export JAVA_OPTS="-Dfile.encoding=UTF-8 \
  -Dcatalina.logbase=/var/log/tomcat7 \
  -Dnet.sf.ehcache.skipUpdateCheck=true \
  -XX:+DoEscapeAnalysis \
  -XX:+UseConcMarkSweepGC \
  -XX:+CMSClassUnloadingEnabled \
  -XX:+UseParNewGC \
  -XX:MaxPermSize=128m \
  -Xms512m -Xmx512m"
export PATH=$JAVA_HOME/bin:$PATH
TOMCAT_HOME=/usr/share/tomcat7
SHUTDOWN_WAIT=20

tomcat_pid() {
  echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
}

start() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ] 
  then
    echo "Tomcat is already running (pid: $pid)"
  else
    # Start tomcat
    echo "Starting tomcat"
    ulimit -n 100000
    umask 007
    /bin/su -p -s /bin/sh tomcat $TOMCAT_HOME/bin/startup.sh
  fi


  return 0
}

stop() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]
  then
    echo "Stoping Tomcat"
    /bin/su -p -s /bin/sh tomcat $TOMCAT_HOME/bin/shutdown.sh

    let kwait=$SHUTDOWN_WAIT
    count=0;
    until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
    do
      echo -n -e "\nwaiting for processes to exit";
      sleep 1
      let count=$count+1;
    done

    if [ $count -gt $kwait ]; then
      echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds"
      kill -9 $pid
    fi
  else
    echo "Tomcat is not running"
  fi
 
  return 0
}

case $1 in
start)
  start
;; 
stop)   
  stop
;; 
restart)
  stop
  start
;;
status)
  pid=$(tomcat_pid)
  if [ -n "$pid" ]
  then
    echo "Tomcat is running with pid: $pid"
  else
    echo "Tomcat is not running"
  fi
;; 
esac    
exit 0
#!/bin/bash
#
# tomcat This shell script takes care of starting and stopping Tomcat
# It also handles killing Tomcat in case it doesn’t stop gracefully
# It uses a PID file to determine the process ID so it should work with multiple Tomcat instances on one server
#
# chkconfig: - 80 20
#
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Tomcat service
# Short-Description: start and stop tomcat
### END INIT INFO

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

# Begin configuration section

export JAVA_HOME=/opt/jdk1.6.0

# These options are used when Tomcat is started
export CATALINA_OPTS=”-Xmx512m -XX:-UseGCOverheadLimit \
-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.port=511 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false”

export LD_LIBRARY_PATH=/usr/local/apr/lib

# Set this to the path where this Tomcat is installed
TOMCAT_HOME=/opt/tomcat

# Number of seconds to wait after nicely requesting stop
SHUTDOWN_WAIT=10

# This should be a different file for each tomcat
CATALINA_PID=/var/run/tomcat.pid

RUNASUSER=root

# End configuration section

export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_PID

start() {
pid=`cat $CATALINA_PID 2>/dev/null`
if [ -n "$pid" ]
then
echo “Tomcat is already running (pid: $pid)”
else
# Start tomcat
echo “Starting tomcat”
touch $CATALINA_PID
chown $RUNASUSER $CATALINA_PID
/bin/su -p -s /bin/sh $RUNASUSER $TOMCAT_HOME/bin/catalina.sh start
fi

return 0
}

stop() {
pid=`cat $CATALINA_PID 2>/dev/null`
if [ -n "$pid" ]
then
/bin/su -p -s /bin/sh $RUNASUSER $TOMCAT_HOME/bin/catalina.sh stop
echo -n “Stopping Tomcat”

let kwait=$SHUTDOWN_WAIT
count=0;
until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
do
echo -n “.”;
sleep 1
let count=$count+1;
done

echo “”

if [ $count -gt $kwait ]; then
echo “process is still running after $SHUTDOWN_WAIT seconds, killing process”
kill $pid
sleep 3

# if it’s still running use kill -9
if [ `ps -p $pid | grep -c $pid` -gt '0' ]; then
echo “process is still running, using kill -9kill -9 $pid
sleep 3
fi

fi

if [ `ps -p $pid | grep -c $pid` -gt '0' ]; then
echo “process is still running, I give up”
else
# success, delete PID file
rm $CATALINA_PID
fi
else
echo “Tomcat is not running”
fi
return 0
}

case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo “Tomcat is running with pid: $pid”
else
echo “Tomcat is not running”
fi
;;
esac
exit 0

 

 

 

posted on 2013-04-10 17:25  androidme  阅读(732)  评论(0编辑  收藏  举报

导航