Skip to content

Instantly share code, notes, and snippets.

@eeichinger
Created April 1, 2015 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eeichinger/329ce169560cabeae2a8 to your computer and use it in GitHub Desktop.
Save eeichinger/329ce169560cabeae2a8 to your computer and use it in GitHub Desktop.
Tomcat start & wait until success
#!/bin/sh
# Usage:
# start_wait <modulename> <servername>
# Default vals for args
# http://stackoverflow.com/questions/9332802/how-to-write-a-bash-script-that-takes-optional-input-arguments
TIMEOUT=90
MODULE=${1:core}
SERVER=${2:dev} # dev | ci | preview
LOGFILE=/srv/tomcat_${MODULE}/logs/catalina.out
SERVER_URL=https://${SERVER}.example.com/${MODULE}/
echo '#####################'
echo 'Startup Settings:'
echo ''
echo Starting up $MODULE
echo Logfile: $LOGFILE
echo Server-Url: ${SERVER_URL}
echo Start Script: /srv/appl/etc/init.d/tomcat_${MODULE}
echo ''
pids=()
timeout $TIMEOUT tail -f $LOGFILE &
tailpid=($!)
pids+=($tailpid)
sudo /srv/appl/etc/init.d/tomcat_${MODULE} start
read -r -d '' cmd <<-'EOF'
echo "logging server responses to /tmp/log-${TAILPID}"
while [ "`curl --silent --show-error --connect-timeout 1 -X GET -I ${SERVER_URL} | tee -a /tmp/start_wait-${TAILPID}.log | grep 'HTTP/1.1 200 OK'`" == "" ];
do
sleep 5
done
echo "Startup success! ${TAILPID}"
kill ${TAILPID}
EOF
timeout ${TIMEOUT} bash -c "SERVER_URL=${SERVER_URL}; TAILPID=${tailpid}; ${cmd}" &
pids+=($!)
wait "${pids[@]}"
ret=$?
echo
echo
echo "#### Server Polling Responses:"
echo
cat /tmp/start_wait-${tailpid}.log
exit ${ret}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment