Created
March 4, 2017 02:18
-
-
Save isaaguilar/c50a00fa6a3ddc1f684ddccbd04d058e to your computer and use it in GitHub Desktop.
init.d script for tomcat7 - something new but mostly borrowed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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