Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/ksh
- #
- # This is jboss service startup script.
- #
- # chkconfig: 35 80 20
- # description: a jboss service
- #
- # Sami Kerola <sami.kerola@tomtom.com>
- # Guido Bakker <guido.bakker@tomtom.com>
- set -e
- trap "echo Failure, exit on error." ERR
- # Sleep time in seconds.
- ITERATIONSLEEP=0.5
- # Treshold before kill -9
- ITERATIONSBEFOREKILLING=60
- # Settings.
- JBOSS_PARTITION=`basename ${0}`
- if [ -f /etc/sysconfig/${JBOSS_PARTITION} ]; then
- . /etc/sysconfig/${JBOSS_PARTITION}
- else
- # To make /etc/rc?.d/symlinks work.
- JBOSS_PARTITION=`echo ${JBOSS_PARTITION} | sed 's/^[SK][0-9][0-9]//'`
- if [ -f /etc/sysconfig/${JBOSS_PARTITION} ]; then
- . /etc/sysconfig/${JBOSS_PARTITION}
- else
- echo "Environment file /etc/sysconfig/${JBOSS_PARTITION} missing. Exiting."
- exit 1
- fi
- fi
- # Terracotta settings.
- if [ "x" != "x$TC_INSTALL_DIR" ]; then
- . $TC_INSTALL_DIR/bin/dso-env.sh
- export JAVA_OPTS="$TC_JAVA_OPTS $JAVA_OPTS"
- fi
- export JAVA_OPTS
- # Define where jboss is - this is the directory containing
- # directories log, bin, conf etc.
- JBOSS_HOME=${JBOSS_HOME:-"/data/jboss"}
- if [ ! -d "${JBOSS_HOME}" ]; then
- echo "JBOSS_HOME is not a directory: ${JBOSS_HOME}"
- exit 1
- fi
- JBOSS_SERVER_PATH="${JBOSS_HOME}/server/${JBOSS_PARTITION}"
- # Add java path.
- JAVAPTH=${JAVAPTH:-"/usr/java/jdk/bin"}
- # Define the user under which jboss.
- if [ "x${RUNASIS}" != "x" ]; then
- JBOSSUS=${USER}
- SUBIT="eval"
- else
- JBOSSUS=${JBOSSUS:-"jboss"}
- SUBIT="su ${JBOSSUS} -c "
- fi
- # Define the classpath for the shutdown class.
- JBOSSCP=${JBOSSCP:-"${JBOSS_HOME}/bin/shutdown.jar:${JBOSS_HOME}/client/jnet.jar"}
- # Define the script to use to start jboss.
- JBOSSSH=${JBOSSSH:-"${JBOSS_HOME}/bin/run.sh -c ${JBOSS_PARTITION}"}
- # Define start and stop commands.
- CMD_START="${JBOSSSH}"
- if [ -z "${JBOSS_USER}" -a -z "${JBOSS_PASS}" ]; then
- CMD_STOP="java -classpath ${JBOSSCP} org.jboss.Shutdown --shutdown -s ${JBOSS_HOST:-"0.0.0.0"}:${JBOSS_JNDI_PORT:-"1099"}"
- else
- CMD_STOP="java -classpath ${JBOSSCP} org.jboss.Shutdown --shutdown --user=${JBOSS_USER} --password=${JBOSS_PASS} -s ${JBOSS_HOST:-"0.0.0.0"}:${JBOSS_JNDI_PORT:-"1099"}"
- fi
- # Set PATH.
- if [ -z "`echo ${PATH} | grep ${JAVAPTH}`" ]; then
- export PATH=${PATH}:${JAVAPTH}
- fi
- # Funcionalities functions.
- handleConsoleLog() {
- if [ "x${JBOSS_CONSOLE}" != "x" ] &&
- [ "x${JBOSS_CONSOLE}" != "x/dev/null" ]; then
- if [ ! -d `dirname ${JBOSS_CONSOLE}` ]; then
- ${SUBIT} "mkdir `dirname ${JBOSS_CONSOLE}`"
- fi
- if [ -f ${JBOSS_CONSOLE} ]; then
- # Rotate old console log.
- ${SUBIT} "mv ${JBOSS_CONSOLE} ${JBOSS_CONSOLE}.`date +%s`"
- fi
- ${SUBIT} "touch ${JBOSS_CONSOLE}"
- else
- # Default is to ignore.
- echo "Warning. Java stdout messages are wrote to /dev/null"
- echo " This makes debugging of certain problems nearly impossible."
- echo " To get rid of this message set JBOSS_CONSOLE in /etc/sysconfig/${JBOSS_PARTITION}"
- echo " which should be a path to console log or /dev/null"
- JBOSS_CONSOLE="/dev/null"
- fi
- }
- startFunction() {
- if isAlreadyRunning; then
- echo "The jboss partition ${JBOSS_PARTITION} is already running; pid ${JAVA_PIDS}"
- else
- echo "Starting: ${JBOSSSH}"
- # Make sure there is no trash in cache.
- rm -rf ${JBOSS_SERVER_PATH}/{data,tmp,work}/
- handleConsoleLog
- cd ${JBOSS_HOME}/bin
- if [ "x${SUBIT}" = "xeval" ]; then
- eval ${CMD_START} < /dev/null >${JBOSS_CONSOLE} 2>&1 &
- else
- ${SUBIT} "${CMD_START} < /dev/null >${JBOSS_CONSOLE} 2>&1 &"
- fi
- fi
- }
- stopFunction() {
- if isAlreadyRunning; then
- echo "Stopping: ${JBOSSSH}"
- set +e
- if [ -z "${SUBIT}" ]; then
- ${CMD_STOP}
- else
- ${SUBIT} "${CMD_STOP}"
- fi
- set -e
- COUNT=0
- while isAlreadyRunning; do
- if [ ${COUNT} -eq 0 ]; then
- printf "Waiting to shutdown."
- fi
- sleep ${ITERATIONSLEEP}
- let COUNT=COUNT+1
- printf "."
- if [ ${COUNT} -ge ${ITERATIONSBEFOREKILLING} ]; then
- echo " killing with signal 9."
- kill -9 ${JAVA_PIDS}
- COUNT=0
- fi
- done
- printf "\n"
- else
- echo "The jboss partition ${JBOSS_PARTITION} is not running."
- fi
- }
- stacktraceFunction() {
- if isAlreadyRunning; then
- echo "Making service ${JBOSS_PARTITION} to dump stacktrace to"
- echo "${JBOSS_CONSOLE}"
- kill -3 ${JAVA_PIDS}
- else
- echo "The jboss partition ${JBOSS_PARTITION} is not running."
- fi
- }
- isAlreadyRunning() {
- JAVA_PIDS=`pgrep -u ${JBOSSUS} -f 'java.*-c[ \t]*'${JBOSS_PARTITION}'[ \t]' ||
- pgrep -u ${JBOSSUS} -f 'java.*-c[ \t]*'${JBOSS_PARTITION}'$' ||
- true`
- if [ "x${JAVA_PIDS}" = "x" ]; then
- return 1
- else
- return 0
- fi
- }
- isPermitted() {
- if [ "x${EUID}" != "x0" ] && [ "x${RUNASIS}" != "x${USER}" ]; then
- echo "Run as root OR set RUNASIS variable in /etc/sysconfig/${JBOSS_PARTITION}"
- echo " and run logged in as user you defined."
- exit 1
- fi
- return 0
- }
- # Parse command line argument.
- case "${1}" in
- start)
- isPermitted
- startFunction
- ;;
- stop)
- isPermitted
- stopFunction
- ;;
- restart)
- isPermitted
- stopFunction
- startFunction
- ;;
- status)
- if isAlreadyRunning; then
- echo "The jboss partition ${JBOSS_PARTITION} is already running; pid ${JAVA_PIDS}"
- else
- echo "The jboss partition ${JBOSS_PARTITION} is not running."
- fi
- ;;
- stacktrace)
- isPermitted
- stacktraceFunction
- ;;
- *)
- echo "Usage: ${0} (stop|start|restart|status|stacktrace)"
- exit 1
- ;;
- esac
- exit 0
- # EOF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement