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 -9″ kill -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