Script init.d Tomcat

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script d'init SysV
Emplacement /etc/init.d/tomcat_<APP>
Voir aussi Tomcat

Script de démarrage/arrêt SysV pour une instance Tomcat. Il est fonctionnel en l'état ; il suffit de renseigner les deux variables USER (utilisateur système propriétaire du Tomcat) et APP_NAME (nom de l'instance).

Script

#!/bin/bash
#
# tomcat     Démarre et arrête Tomcat
#
# chkconfig: 345 85 15
#
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Description: Servlet 2.5 / JSP 2.1
# Short-Description: start and stop tomcat
### END INIT INFO

## Source function library.
. /etc/rc.d/init.d/functions
export USER=changeme
export APP_NAME=changeme

export JAVA_HOME=/usr/bin/java
export LOG_HOME=/var/log/$APP_NAME
export PATH=$JAVA_HOME/bin:$PATH
export TOMCAT_HOME=/APPDIR/tomcat/$APP_NAME

SHUTDOWN_WAIT=10
RETVAL=0
umask 077

tomcat_pid() {
  echo `ps aux | grep $USER | grep -v grep | awk '{ print $2 }'`
}

start() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]; then
    echo "Tomcat is already running (pid: $pid)"
  else
    echo "Starting tomcat"
    ulimit -n 100000
    umask 007
    logger -s "Start $APP_NAME"
    /bin/su - $USER -c $TOMCAT_HOME/bin/startup.sh
    return $RETVAL
  fi
  return 0
}

stop() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]; then
    echo "Stopping Tomcat"
    logger -s "Stop $APP_NAME"
    /bin/su - $USER -c $TOMCAT_HOME/bin/shutdown.sh

    let kwait=$SHUTDOWN_WAIT
    count=0
    until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]; do
      echo -n -e "\nwaiting for processes to exit"
      sleep 1
      let count=$count+1
    done

    if [ $count -gt $kwait ]; then
      echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds\n"
      kill -9 $pid
    fi
  else
    echo "Tomcat is not running"
  fi
  return 0
}

version() {
  if [ -f $TOMCAT_HOME/bin/version.sh ]; then
    logger -s "Display $APP_NAME Version"
    /bin/su -l $USER -c $TOMCAT_HOME/bin/version.sh
    return $RETVAL
  fi
}

case $1 in
  start)   start ;;
  stop)    stop ;;
  restart|reload) stop; sleep 5; start ;;
  status)
    pid=$(tomcat_pid)
    if [ -n "$pid" ]; then
      echo "Tomcat is running with pid: $pid"
    else
      echo "Tomcat is not running"
    fi
  ;;
  version) version ;;
  *)
    echo "Usage: $0 {start|stop|restart|reload|status|version}"
    exit 1
  ;;
esac
exit 0

Voir aussi