Tempo aproximado para leitura: 00:04:40 min
Dúvida
Como posso unificar em um script os comandos para iniciar, parar e verificar status do serviço Tomcat no Linux?
Ambiente
Framework - Framework (Linha Datasul) - Tomcat – Todas as versões
Solução
A utilização deste script simplifica o gerenciamento do serviço, utilizando sempre o mesmo comando para executar algumas ações no serviço do Tomcat.
Para este exemplo, teremos as opções de iniciar, parar, reiniciar e verificar o status do serviço.
Pode ser criado um script para cada ambiente, como por exemplo um para o ambiente de produção e outro para o de testes.
Este script é somente um facilitador, o serviço Tomcat precisa estar operacional no servidor com seus scripts padrões.
Neste exemplo criamos na pasta do Tomcat um arquivo com nome tomcat-ofi.
Deverá possuir o seguinte conteúdo:
#!/bin/bash
SVCNAME=Tomcat-Oficial
TOMCAT_HOME=/totvs/apache-tomcat-9.0.37-oficial
TSTART=$TOMCAT_HOME/bin/startup.sh
TSTOP=$TOMCAT_HOME/bin/shutdown.sh
start() {
a=`ps -ef |grep java | grep -m 1 "$TOMCAT_HOME" | awk '{ print $15 }'`
if [ -n "$a" ]; then
echo -e " \033[1;32m $SVCNAME ativo \033[0m"
else
echo -n "Iniciando $SVCNAME: "
cd $TOMCAT_HOME
${TSTART}
echo "done."
fi
}
stop() {
STATE=0
STATE=`ps -ef |grep java|grep $TOMCAT_HOME|wc -l`
if [ "$STATE" -ge "1" ] ; then
echo -n "Parando $SVCNAME: "
cd $TOMCAT_HOME
${TSTOP}
sleep 5
a=`ps -ef |grep java | grep -m 1 "$TOMCAT_HOME" | awk '{ print $2 }'`
`kill -9 "$a"`
echo -e " \033[1;31m kill PID $a \033[0m"
fi
}
status(){
STATE=0
STATE=`ps -ef |grep java|grep $TOMCAT_HOME|wc -l`
echo -e "Servico : \033[1;29m $SVCNAME \033[0m"
if [ "$STATE" -ge "1" ] ; then
echo -e "STATUS: \033[1;32m Ativo \033[0m"
else
echo -e "STATUS: \033[1;31m Inativo \033[0m"
fi
a=`ps -ef |grep java | grep -m 3 "$TOMCAT_HOME" | awk '{ print $2 }'`
echo -e "PID: \033[1;31m $a \033[0m"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 3
start
;;
status)
status
;;
*)
echo "Informe um dos Parametros: {start|stop|restart|status}"
esac
Informe na variável SVCNAME um nome de exibição para o serviço e na variável TOMCAT_HOME o caminho para a pasta base do Tomcat do ambiente utilizado, como no exemplo:
SVCNAME=Tomcat-Oficial
TOMCAT_HOME=/totvs/apache-tomcat-9.0.37-oficial
O script precisará de permissão de leitura e execução no Linux. Para configurar uma permissão de leitura, escrita e execução para o dono do arquivo e somente leitura e execução para os demais, utilize o comando:
chmod 755 tomcat-ofi
Este script recebe os seguintes parâmetros:
start: Para iniciar o serviço;
stop: Para parar o serviço;
restart: Para reiniciar o serviço;
status: Para verificar se o serviço está ativo ou não.
Execute o script informando o parâmetro que deseja, como por exemplo, para iniciar o Tomcat:
/totvs/apache-tomcat-9.0.37-oficial/tomcat-ofi start
Para facilitar sua execução, adicione a pasta do Tomcat na variável PATH do Linux. Também pode ser criado um link simbólico em alguma pasta que já esteja no PATH, apontando para o script criado, ou copie o script para esta pasta. Exemplo para criar um link simbólico:
ln -s /totvs/apache-tomcat-9.0.37-oficial/tomcat-ofi /usr/bin/tomcat-ofi
Com isto, não é necessário informar mais a pasta onde está localizado o script, executando diretamente o comando:
tomcat-ofi start
Este é um exemplo de script e pode variar em certas distribuições do Linux, ajuste conforme sua necessidade. Em algumas distribuições, pode-se copiar ou criar link simbólico na pasta /etc/init.d, sendo possível utilizar o comando service.
0 Comentários