Skip to content

Instantly share code, notes, and snippets.

@isaaguilar
Created March 4, 2017 02:18
Show Gist options
  • Save isaaguilar/c50a00fa6a3ddc1f684ddccbd04d058e to your computer and use it in GitHub Desktop.
Save isaaguilar/c50a00fa6a3ddc1f684ddccbd04d058e to your computer and use it in GitHub Desktop.
init.d script for tomcat7 - something new but mostly borrowed
#!/bin/bash
#
# tomcat
#
# chkconfig: 345 96 30
# description: Start up the Tomcat servlet engine.
#
# processname: java
# pidfile: /var/run/tomcat.pid
#
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Should-Start: distcache
# Short-Description: start and stop Apache HTTP Server
# Description: implementation for Servlet 2.5 and JSP 2.1
## END INIT INFO
# Source function library.
. /etc/init.d/functions
## tomcat installation directory
PROCESS_NAME=tomcat7
CATALINA_HOME="/opt/tomcat7"
## run as a diffent user
TOMCAT_USER=tomcat
TOMCAT_BIN="$CATALINA_HOME/bin/catalina.sh"
# JRE_HOME=$JAVA_HOME
SHUTDOWN_WAIT=5; # This is multiplied by two. The last half gets a countdown
## Path to the pid, runnning info file
pidfile=${PIDFILE-/var/run/${PROCESS_NAME}.pid};
lockfile=${LOCKFILE-/var/lock/subsys/${PROCESS_NAME}};
RETVAL=0
case "$1" in
start)
PID=`pidofproc -p ${pidfile} ${PROCESS_NAME}`
if [[ (-n ${PID}) && ($PID -gt 0) ]]; then
logger -s "${PROCESS_NAME}(pid ${PID}) is already running." >/dev/null 2>&1
echo "${PROCESS_NAME}(pid ${PID}) is already running."
exit;
fi
if [ -f $CATALINA_HOME/bin/startup.sh ];
then
logger -s "Starting Tomcat" >/dev/null 2>&1
echo "Starting tomcat"
/bin/su -l ${TOMCAT_USER} -c "$CATALINA_HOME/bin/startup.sh -Dprocessname=${PROCESS_NAME}" >/dev/null 2>&1
PID=`ps -eaf|grep processname=${PROCESS_NAME}|grep -v grep|awk '{print $2}'`
RETVAL=$?
[ $RETVAL = 0 ] && touch ${lockfile}
[ $RETVAL = 0 ] && echo "${PID}" > ${pidfile}
success
echo "Tomcat has been started"
fi
;;
stop)
pid=`pidofproc -p ${pidfile} ${PROCESS_NAME}`
if [ -n "$pid" ]
then
echo "Shutting down tomcat"
su $TOMCAT_USER -c "JRE_HOME=$JRE_HOME $TOMCAT_BIN stop" >/dev/null 2>&1
let kill_count=0;
until [ "$(ps -p "$pid" | grep -c "$pid")" = '0' ] || [ $kill_count -gt $SHUTDOWN_WAIT ]
do
sleep 1
let kill_count=$kill_count+1;
done
let kill_count=0;
until [ "$(ps -p "$pid" | grep -c "$pid")" = '0' ] || [ $kill_count -gt $SHUTDOWN_WAIT ]
do
if [ $kill_count -lt 1 ];then
echo -n "Killing in $SHUTDOWN_WAIT seconds"
fi
echo -n ".";
sleep 1
let kill_count=$kill_count+1;
done
if [ $kill_count -gt $SHUTDOWN_WAIT ];
then
echo ""
/bin/kill -9 "$pid"
sleep 1
fi
pid=`pidofproc -p ${pidfile} ${PROCESS_NAME}`
if [ -n "$pid" ]
then
failure
echo "Failed to shutdown Tomcat"
fi
success
echo "Tomcat has been stopped"
else
echo "Tomcat is not running"
fi
;;
status)
status -p ${pidfile} ${PROCESS_NAME}
RETVAL=$?
;;
restart)
$0 stop
$0 start
;;
version)
if [ -f $CATALINA_HOME/bin/version.sh ];
then
logger -s "Display Tomcat Version"
/bin/su -l ${TOMCAT_USER} -c "$CATALINA_HOME/bin/version.sh"
RETVAL=$?
fi
;;
*)
echo $"Usage: $0 {start|stop|restart|status|version}"
exit 1
;;
esac
exit $RETVAL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment