Skip to content

Instantly share code, notes, and snippets.

@mattocchi
Last active October 3, 2019 09:47
Show Gist options
  • Save mattocchi/7ae634a1517ca4176020c1725475fade to your computer and use it in GitHub Desktop.
Save mattocchi/7ae634a1517ca4176020c1725475fade to your computer and use it in GitHub Desktop.
Tomcat Startup Script
#!/bin/bash
#
# Author: Mirco Attocchi
#
# Tomcat Startup Script
# thanks to http://www.akadia.com/download/soug/tomcat/html/tomcat_startscript.html
# thanks to http://askubuntu.com/questions/223944/how-to-automatically-restart-tomcat7-on-system-reboots
CATALINA_HOME=/home/cloud/apache-tomcat-7.0.82; export CATALINA_HOME
JAVA_HOME=/home/cloud/jdk1.7.0_75; export JAVA_HOME
TOMCAT_OWNER=cloud; export TOMCAT_OWNER
SHUTDOWN_WAIT=30
# CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m -Xms128m -Xmx2048m -Xss512k"
CATALINA_OPTS="$CATALINA_OPTS -Xms256m -Xmx512m -XX:PermSize=32m"
CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m -Xss2m"
CATALINA_OPTS="$CATALINA_OPTS -XX:+UseConcMarkSweepGC"
CATALINA_OPTS="$CATALINA_OPTS -XX:+CMSClassUnloadingEnabled"
# JMX Monitoring Options
#CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote"
#CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=9199"
#CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
#CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
#CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=test.aleven.it"
export CATALINA_OPTS
HTTP_PORT="8081"
HTTPS_PORT="8444"
AJP_PORT="8010"
#SHUTDOWN_PORT=$(($HTTP_PORT+1))
# java opts are primary and we need these to define the http ports
export JAVA_OPTS="$JAVA_OPTS -Dhttp.port=$HTTP_PORT"
export JAVA_OPTS="$JAVA_OPTS -Dhttps.port=$HTTPS_PORT"
export JAVA_OPTS="$JAVA_OPTS -Dajp.port=$AJP_PORT"
#export JAVA_OPTS="$JAVA_OPTS -Dshutdown.port=$SHUTDOWN_PORT"
tomcat_pid() {
#echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
echo `ps aux | grep $CATALINA_HOME | grep -v grep | awk '{ print $2 }'`
}
start() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo "Tomcat is already running (pid: $pid)"
else
#echo "Clean Tomcat logs: "
#su $TOMCAT_OWNER -c "rm -rf $CATALINA_HOME/logs/*"
#rm -rf $CATALINA_HOME/logs/*
#rm -rf *.log*
echo "Starting Tomcat..." $HTTP_PORT $HTTPS_PORT $AJP_PORT
#su $TOMCAT_OWNER -c $CATALINA_HOME/bin/startup.sh
$CATALINA_HOME/bin/startup.sh
sleep 2
fi
}
stop() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo "Stopping Tomcat..."
#su $TOMCAT_OWNER -c $CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/shutdown.sh
sleep 1
let kwait=$SHUTDOWN_WAIT
count=0;
until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
do
echo "waiting for processes $pid to exit";
sleep 1
let count=$count+1;
done
if [ $count -gt $kwait ]; then
echo "killing processes which didn't stop after $SHUTDOWN_WAIT seconds"
kill -9 $pid
echo " process killed manually"
fi
else
echo "Tomcat is not running"
fi
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
;;
*)
echo $"Usage: tomcat {start|stop|restart}"
exit
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment