You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Robert Gonzales <r_...@hotmail.com> on 2008/09/11 17:29:23 UTC
Script will not start Tomcat6 on restart
current EnviornmentRHEL 5JDK 1.5.0Tomcat6Virtual Machine
Hello all,I am looking at our existing script we are trying to find out why our script will not start Tomcat6. We have checked the following. We did change the script and we will show you the one that works but is not as extensive.
Run level is 3 checked /etc/rc3.d for symbolic link, here is what is listedS80tomcat6 -> ../init.d/tomcat6
Also checked /etc/rc.d/rc3.dS80tomcat6 -> ../init.d/tomcat6
Checked: /etc/init.d/tomcat6 Below is the script that is not starting the service
#!/bin/bash#set -x
## tomcat6 This shell script takes care of starting and stopping Tomcat## chkconfig: - 80 20#### BEGIN INIT INFO# Provides: tomcat6# Required-Start: $network $syslog# Required-Stop: $network $syslog# Default-Start:# Default-Stop:# Description: Release implementation for Servlet 2.4 and JSP 2.0# Short-Description: start and stop tomcat### END INIT INFO## - originally written by Henri Gomez, Keith Irwin, and Nicolas Mailhot# - heavily rewritten by Deepak Bhole and Jason Corley#
# commented out until the RHEL and FC daemon functions converge# Source the function library#if [ -r "/etc/rc.d/init.d/functions" ]; then #. /etc/rc.d/init.d/functions#fi
NAME="$(basename $0)"unset ISBOOTif [ "${NAME:0:1}" = "S" -o "${NAME:0:1}" = "K" ]; then NAME="${NAME:3}" ISBOOT="1"fi
# For SELinux we need to use 'runuser' not 'su'if [ -x "/sbin/runuser" ]; then SU="/sbin/runuser"else SU="su"fi
# Get the tomcat config (use this for environment specific settings)TOMCAT_CFG="/etc/tomcat6/tomcat6.conf"if [ -r "$TOMCAT_CFG" ]; then . ${TOMCAT_CFG}fi
# Get instance specific config fileif [ -r "/etc/sysconfig/${NAME}" ]; then . /etc/sysconfig/${NAME}fi
# Define which connector port to useCONNECTOR_PORT="${CONNECTOR_PORT:-8080}"
# Path to the tomcat launch script#TOMCAT_SCRIPT="/usr/bin/dtomcat6"TOMCAT_SCRIPT="/usr/local/tomcat6/bin/catalina.sh"
# Path to the script that will refresh jar symlinks on startup#$TOMCAT_RELINK_SCRIPT="${CATALINA_HOME}/bin/relink"
# Tomcat program nameTOMCAT_PROG="$NAME" # Define the tomcat usernameTOMCAT_USER="${TOMCAT_USER:-tomcat}"
# Define the tomcat log fileTOMCAT_LOG="${TOMCAT_LOG:-/var/log/tomcat6/catalina.out}"
RETVAL="0"
# remove when the RHEL and FC daemon functions converge# (pulled from /etc/rc.d/init.d/functions)function checkpid() { local i for i in $* ; do if [ -d "/proc/${i}" ]; then return 0 fi done return 1}
# remove when the RHEL and FC daemon functions converge# (pulled from /etc/rc.d/init.d/functions)function echo_failure() { echo -en "\\033[60G" echo -n "[ " echo -n $"FAILED" echo -n " ]" echo -ne "\r" return 1}
# remove when the RHEL and FC daemon functions converge# (pulled from /etc/rc.d/init.d/functions)function echo_success() { echo -en "\\033[60G" echo -n "[ " echo -n $"OK" echo -n " ]" echo -ne "\r" return 0}
# Look for open ports, as the function name might implyfunction findFreePorts() { local isSet1="false" local isSet2="false" local isSet3="false" local lower="8000" randomPort1="0" randomPort2="0" randomPort3="0" local -a listeners="( $( netstat -ntl | \ awk '/^tcp/ {gsub("(.)*:", "", $4); print $4}' ) )" while [ "$isSet1" = "false" ] || \ [ "$isSet2" = "false" ] || \ [ "$isSet3" = "false" ]; do let port="${lower}+${RANDOM:0:4}" if [ -z `expr " ${listeners[*]} " : ".*\( $port \).*"` ]; then if [ "$isSet1" = "false" ]; then export randomPort1="$port" isSet1="true" elif [ "$isSet2" = "false" ]; then export randomPort2="$port" isSet2="true" elif [ "$isSet3" = "false" ]; then export randomPort3="$port" isSet3="true" fi fi done}
function makeHomeDir() { if [ ! -d "$CATALINA_HOME" ]; then echo "$CATALINA_HOME does not exist, creating" if [ ! -d "/var/lib/${NAME}" ]; then mkdir -p /var/lib/${NAME} cp -pLR /var/lib/tomcat6/* /var/lib/${NAME} fi mkdir -p $CATALINA_HOME ${CATALINA_HOME}/conf /var/cache/${NAME}/temp \ /var/cache/${NAME}/work /var/log/${NAME} for i in temp work; do ln -fs /var/cache/${NAME}/${i} ${CATALINA_HOME}/${i} done for i in common server shared webapps; do ln -fs /var/lib/${NAME}/${i} ${CATALINA_HOME}/${i} done ln -fs /var/log/${NAME} ${CATALINA_HOME}/logs cp -pLR /etc/tomcat6/* ${CATALINA_HOME}/conf/ cp -pLR /usr/local/tomcat6/bin $CATALINA_HOME cp -pLR /var/cache/tomcat6/work/* ${CATALINA_HOME}/work/ chown ${TOMCAT_USER}:${TOMCAT_USER} /var/log/${NAME} fi}
function parseOptions() { options="" options="$options $( awk '!/^#/ && !/^$/ { ORS=" "; print "export ", $0, ";" }' \ $TOMCAT_CFG )" if [ -r "/etc/sysconfig/${NAME}" ]; then options="$options $( awk '!/^#/ && !/^$/ { ORS=" "; print "export ", $0, ";" }' \ /etc/sysconfig/${NAME} )" fi TOMCAT_SCRIPT="$options $TOMCAT_SCRIPT"}
# See how we were called.function start() { echo -n "Starting ${TOMCAT_PROG}: " if [ -f "/var/lock/subsys/${NAME}" ] ; then if [ -f "/var/run/${NAME}.pid" ]; then read kpid < /var/run/${NAME}.pid if checkpid $kpid 2>&1; then echo "$NAME process already running" return -1 else echo "lock file found but no process running for" echo "pid $kpid, continuing" fi fi fi export CATALINA_PID="/var/run/${NAME}.pid" touch $CATALINA_PID chown ${TOMCAT_USER}:${TOMCAT_USER} $CATALINA_PID if [ "$CATALINA_HOME" != "/usr/local/tomcat6" ]; then # Create a tomcat directory if it doesn't exist makeHomeDir # If CATALINA_HOME doesn't exist modify port number so that # multiple instances don't interfere with each other findFreePorts sed -i -e "s/8005/${randomPort1}/g" -e "s/8080/${CONNECTOR_PORT}/g" \ -e "s/8009/${randomPort2}/g" -e "s/8443/${randomPort3}/g" \ ${CATALINA_HOME}/conf/server.xml fi# $TOMCAT_RELINK_SCRIPT $SU - $TOMCAT_USER -c "$TOMCAT_SCRIPT start" >> $TOMCAT_LOG 2>&1 RETVAL="$?" if [ "$RETVAL" -eq 0 ]; then echo_success touch /var/lock/subsys/${NAME} else echo_failure fi echo return $RETVAL}
function status() { RETVAL="1" if [ -f "/var/run/${NAME}.pid" ]; then read kpid < /var/run/${NAME}.pid if checkpid $kpid 2>&1; then echo "$0 is already running (${kpid})" RETVAL="0" else echo "lock file found but no process running for pid $kpid" fi else pid="$(pgrep -u tomcat java)" if [ -n "$pid" ]; then echo "$0 running (${pid}) but no PID file exists" RETVAL="0" else echo "$0 is stopped" fi fi return $RETVAL}
function stop() { local STOP_VERBOSE="false" echo -n "Stopping $TOMCAT_PROG: " if [ -f "/var/lock/subsys/${NAME}" ]; then $SU - $TOMCAT_USER -c "$TOMCAT_SCRIPT stop" >> $TOMCAT_LOG 2>&1 RETVAL="$?" if [ "$RETVAL" -eq "0" ]; then count="0" if [ -f "/var/run/${NAME}.pid" ]; then read kpid < /var/run/${NAME}.pid until [ "$(ps --pid $kpid | grep -c $kpid)" -eq "0" ] || \ [ "$count" -gt "$SHUTDOWN_WAIT" ]; do if [ "$STOP_VERBOSE" = "true" ]; then echo -n -e "\nwaiting for processes $kpid to exit" fi sleep 1 let count="${count}+1" done if [ "$count" -gt "$SHUTDOWN_WAIT" ]; then if [ "$STOP_VERBOSE" = "true" ]; then echo -n -e "\nkilling processes which didn't stop" echo -n -e "after " echo -n "$SHUTDOWN_WAIT seconds" fi kill -9 $kpid fi echo_success if [ "$count" -gt "0" ]; then echo -n -e "\n" fi fi rm -f /var/lock/subsys/$NAME /var/run/$NAME.pid else echo_failure fi fi}
# See how we were called.case "$1" in start) parseOptions start ;; stop) parseOptions stop ;; restart) parseOptions stop sleep 2 start ;; condrestart) if [ -f "/var/run/${NAME}.pid" ]; then parseOptions stop start fi ;; status) status ;; version) parseOptions "${JAVA_HOME}/bin/java" \ -classpath "${CATALINA_HOME}/server/lib/catalina.jar" \ org.apache.catalina.util.ServerInfo ;; *) echo "Usage: $TOMCAT_PROG {start|stop|restart|condrestart|status|version}" exit 1esac
exit $RETVAL
****************************************************************************************************************************************************************************************************************************************this is the script that will start the service under tomcat user but will not stop the service.
case $1 in start) su root /usr/local/tomcat6/bin/startup.sh ;;stop) su root /usr/local/tomcat6/bin/shutdown.sh ;;restart) su root /usr/local/tomcat6/bin/shutdown.sh su root /usr/local/tomcat6/bin/startup.sh ;;esac exit 0
Thank you for any time you can offer to us.
_________________________________________________________________
Get more out of the Web. Learn 10 hidden secrets of Windows Live.
http://windowslive.com/connect/post/jamiethomson.spaces.live.com-Blog-cns!550F681DAD532637!5295.entry?ocid=TXT_TAGLM_WL_domore_092008