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