chkconfig und service sind zwei Werkzeuge unter Redhat, die die Runlevel-Verwaltung vereinfachen. Damit chkconfig feststellen kann, für welche Runlevel der betreffende Dienst aktiviert sein soll, muss man Meta-Informationen in den Skript-Header einfügen.

Apache Tomcat bringt in $CATALINE_HOME/bin/jsvc.tar.gz die Quellen eines Verwaltungswerkzeugs für sich mit. Dieses Paket kann man unter Centos 5.2 (installieren der RPMs gcc-c++ und autoconf ist notwendig) folgendermaßen übersetzen:

tar xfz jsvc.tar.gz

cd jsvc-src

./configure –with-java=/usr/java/default

make

cp jsvc ..

Mit dem folgenden Init-Skript kann man nun service und chkconfig für Apache Tomcat nutzen:

#!/bin/sh
#
# Startup script for the Apache Tomcat servlet container
#
# chkconfig: 345 55 25
# description: Apache Tomcat servlet container
# processname: tomcat
# pidfile: /var/run/tomcat/jsvc.pid
# config: /opt/apache-tomcat-6.0.20/conf/server.xml
 
JAVA_HOME=/usr/java/default
CATALINA_HOME=/opt/apache-tomcat-6.0.20
DAEMON_HOME=/var/run/tomcat
TOMCAT_USER=apache
 
# for multi instances adapt those lines.
TMP_DIR=/var/tmp
PID_FILE=/var/run/tomcat/jsvc.pid
 
CATALINA_OPTS=
CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar
 
prog="Tomcat"
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
case "$1" in
start)
#
# Start Tomcat
#
echo -n "Starting $prog: "
$CATALINA_HOME/bin/jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Djava.io.tmpdir=$TMP_DIR \
-wait 10 \
-pidfile $PID_FILE \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
if [ $? == 0 ];
then
action
else
action
fi
;;
 
stop)
#
# Stop Tomcat
#
echo -n "Stopping $prog: "
$CATALINA_HOME/bin/jsvc \
-stop \
-pidfile $PID_FILE \
org.apache.catalina.startup.Bootstrap
if [ $? == 0 ];
then
action
else
action
fi
;;
 
*)
echo "Usage tomcat start/stop"
exit 1;;
esac