Como reiniciar automaticamente o Tomcat7 nas reinicializações do sistema?

23

Eu instalei o Tomcat 7 no Ubuntu 12.04 LTS que é executado em uma instância do Amzon EC2. Agora eu desejo que o tomcat reinicie automaticamente na reinicialização do sistema.

Eu leio este blog que sugere a inclusão do script abaixo para /etc/init.d/tomcat7 :

# Tomcat auto-start
#
# description: Auto-starts tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid

case $1 in
start)
sh /usr/share/tomcat7/bin/startup.sh
;;
stop) 
sh /usr/share/tomcat7/bin/shutdown.sh
;;
restart)
sh /usr/share/tomcat7/bin/shutdown.sh
sh /usr/share/tomcat7/bin/startup.sh
;;
esac 
exit 0

e emita os seguintes comandos:

sudo chmod 755 /etc/init.d/tomcat7

sudo ln -s /etc/init.d/tomcat7 /etc/rc1.d/K99tomcat

sudo ln -s /etc/init.d/tomcat7 /etc/rc2.d/S99tomcat

sudo /etc/init.d/tomcat7 restart

Minhas perguntas

  1. O tomcat7 já tem um script, onde precisamos colar o script sugerido?
  2. O procedimento sugerido está correto?
por Gaurav Agarwal 24.11.2012 / 15:14

5 respostas

46

Crie o script de inicialização em /etc/init.d/tomcat7 com o conteúdo abaixo (seu script também deve funcionar, mas acho que ele está mais próximo dos padrões).

Desta forma, o Tomcat iniciará somente após as interfaces de rede terem sido configuradas.

Conteúdo do script de inicialização:

#!/bin/bash

### BEGIN INIT INFO
# Provides:        tomcat7
# Required-Start:  $network
# Required-Stop:   $network
# Default-Start:   2 3 4 5
# Default-Stop:    0 1 6
# Short-Description: Start/Stop Tomcat server
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

start() {
 sh /usr/share/tomcat7/bin/startup.sh
}

stop() {
 sh /usr/share/tomcat7/bin/shutdown.sh
}

case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Run as $0 <start|stop|restart>"; exit 1;;
esac

Altere suas permissões e adicione os links simbólicos corretos automaticamente:

chmod 755 /etc/init.d/tomcat7
update-rc.d tomcat7 defaults

E a partir de agora, ele será automaticamente iniciado e encerrado ao entrar nos níveis de execução apropriados. Você também pode controlá-lo com service tomcat7 <stop|start|restart>

    
por Marcin Kaminski 01.12.2012 / 23:01
3
#!/bin/bash
#
# Author : subz
# Copyright (c) 2k15
#
# Make kill the tomcat process
#
TOMCAT_HOME=/media/subin/works/Applications/apache-tomcat-7.0.57
SHUTDOWN_WAIT=5

tomcat_pid() {
  echo 'ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }''
}

start() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ] 
  then
    echo "Tomcat is already running (pid: $pid)"
  else
    # Start tomcat
    echo "Starting tomcat"
    /bin/sh $TOMCAT_HOME/bin/startup.sh
  fi


  return 0
}

stop() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]
  then
    echo "Stoping Tomcat"
    /bin/sh $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"
      kill -9 $pid
      echo  " \nprocess killed manually"
    fi
  else
    echo "Tomcat is not running"
  fi

  return 0
}
pid=$(tomcat_pid)

 if [ -n "$pid" ]
  then
    echo "Tomcat is running with pid: $pid"
    stop
  else
    echo "Tomcat is not running"
    start
  fi
exit 0
    
por SUBZ 13.05.2015 / 07:11
3

Isso não pode ser adicionado ao /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sleep 10
/usr/share/tomcat7/bin/startup.sh
    
por penner 01.12.2012 / 23:09
2

A Digital Ocean oferece um guia muito útil para o uso dos scripts Tomcat 8.xe Ubuntu 16.04 LTS e systemd.

link

    
por rjha94 20.05.2017 / 19:01
0

o apache tomcat não envia nenhum script de inicialização com ele.

  1. Instale a versão pré-empacotada mantida pelo Ubuntu a partir do gerenciador de pacotes do Ubuntu, esta versão envia seu próprio script de inicialização.

  2. Siga as etapas do blog ao qual você se refere, que fornecem um script de inicialização do kickstart.

por Yassine Elassad 01.12.2012 / 22:43