#!/bin/sh # # Startup script for Tomcat 4.0, the Apache Servlet Engine # # chkconfig: 2345 80 20 # description: Tomcat 4.0 is the Apache Servlet Engine RI for Servlet 2.3/JSP 1.2 # processname: tomcat # pidfile: /var/run/tomcat4.pid # config: /etc/tomcat4/tomcat4.conf # ### BEGIN INIT INFO # Provides: tomcat4 # Required-Start: $local_fs $network $syslog # Required-Stop: # Default-Start: 3 2 4 5 # Default-Stop: 1 6 # Short-Description: Tomcat 4.0 Servlet Engine # Description: Tomcat 4.0 is the Apache Servlet Engine RI for Servlet 2.3/JSP 1.2 ### END INIT INFO # Gomez Henri # Keith Irwin # Nicolas Mailhot # # version 1.02 - Removed initlog support # version 1.03 - Removed config: # version 1.04 - tomcat will start before httpd and stop after httpd # version 1.05 - jdk hardcoded to link /usr/java/jdk and tomcat runs as "nobody" # version 1.06 - split up into script and config file # version 1.07 - Rework from Nicolas ideas # version 1.08 - Fix work dir permission at start time, switch to use tomcat4 # version 1.09 - Fix pidfile and config tags # version 1.10 - Fallback to su direct use on systems without Redhat/Mandrake init.d functions # version 1.11 - Fix webapps dir permissions # version 1.12 - remove initial start/stop level for chkconfig (- 80 20) # version 1.13 - remove chown of logs/work/temp/webapps dir, owned by tomcat4 at install time # version 1.14 - correct the start/stop ugly hack by waiting all the threads stops # version 1.15 - ensure we're looking for TOMCAT_USER running catalina # version 1.16 - Add support for CATALINA_PID env var # version 1.17 - Remove run files only tomcat started correctl # in start area, check that tomcat is not allready running # version 1.18 - Casper Pedersen # Fixed an issue with "kill -9 $kipd" in line 135 to "kill -9 $kpid" # Thanks goes to Marc Gimpel for pointing it out. # # # Source function library. if [ -x /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions fi # Get Tomcat config TOMCAT_CFG="/etc/tomcat4/tomcat4.conf" [ -r "$TOMCAT_CFG" ] && . "${TOMCAT_CFG}" # Path to the tomcat launch script (direct don't use wrapper) TOMCAT_SCRIPT=${CATALINA_HOME}/bin/dtomcat4 # Tomcat name :) TOMCAT_PROG=tomcat4 # if TOMCAT_USER is not set, use tomcat4 like Apache HTTP server if [ -z "$TOMCAT_USER" ]; then TOMCAT_USER="tomcat4" fi # Since the daemon function will sandbox $tomcat # no environment stuff should be defined here anymore. # Please use the /etc/tomcat.conf file instead ; it will # be read by the $tomcat script RETVAL=0 # See how we were called. start() { echo -n "Starting $TOMCAT_PROG: " if [ -f /var/run/tomcat4.pid ] ; then CAT_PID=/var/run/tomcat4.pid if [ -f /proc/`cat $CAT_PID`/cmdline ] ; then if grep -ic catalina /proc/`cat $CAT_PID`/cmdline ; then echo "process already running" return -1 fi fi fi export CATALINA_PID=/var/run/tomcat4.pid touch $CATALINA_PID chown $TOMCAT_USER:$TOMCAT_USER $CATALINA_PID if [ -x /etc/rc.d/init.d/functions ]; then daemon --user $TOMCAT_USER $TOMCAT_SCRIPT start else su - $TOMCAT_USER -c "$TOMCAT_SCRIPT start" fi RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/tomcat4 return $RETVAL } stop() { echo -n "Stopping $TOMCAT_PROG: " if [ -f /var/lock/subsys/tomcat4 ] ; then if [ -x /etc/rc.d/init.d/functions ]; then daemon --user $TOMCAT_USER $TOMCAT_SCRIPT stop else su - $TOMCAT_USER -c "$TOMCAT_SCRIPT stop" fi RETVAL=$? if [ $RETVAL = 0 ]; then count=0; if [ -f /var/run/tomcat4.pid ]; then read kpid < /var/run/tomcat4.pid let kwait=$SHUTDOWN_WAIT until [ `ps --pid $kpid | grep -c $kpid` = '0' ] || [ $count -gt $kwait ] do echo echo -n "waiting for processes to exit"; sleep 1 let count=$count+1; done if [ $count -gt $kwait ]; then echo echo -n "killing processes which didn't stop after $SHUTDOWN_WAIT seconds" kill -9 $kpid fi fi rm -f /var/lock/subsys/tomcat4 /var/run/tomcat4.pid fi else success fi echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop sleep 2 start ;; condrestart) if [ -f /var/run/tomcat4.pid ] ; then stop start fi ;; *) echo "Usage: $TOMCAT_PROG {start|stop|restart|condrestart}" exit 1 esac exit $RETVAL