Inicie o Tomcat através do cronjob

1

Para garantir que o Tomcat esteja em execução o tempo todo, eu escrevi o seguinte script de shell

#!/bin/bash

status="$(curl -s http://www.domain.com/check)"

if [ "$status" != "OK" ]
then
    /opt/apache-tomcat-8.0.15/bin/startup.sh
    /usr/sbin/sendmail [email protected] < email.txt
fi

e adicionado ao crontab via

*/1 * * * * /opt/scripts/check.sh

Agora, se eu desligar o servidor manualmente, recebo um e-mail a cada minuto, mas, por algum motivo, o script não inicia o Tomcat. No entanto, se eu executar check.sh manualmente, recebo um email e o Tomcat começa a ser executado novamente.

Alguma idéia de por que adicionar o script ao crontab não inicia o Tomcat?

    
por bernland 08.01.2015 / 06:54

2 respostas

1

A resposta mais provável é as variáveis de ambiente, ou seja, um shell interativo tem muito (incluindo um $ PATH bastante completo), enquanto que para programas executados a partir do cron eles são tipicamente limitados (incluindo um caminho abreviado).

    
por 08.01.2015 / 07:09
1

@Craig Miskell: Obrigado por me apontar na direção certa. Foi assim que resolvi o problema:

Primeiro, adicionei as seguintes linhas de código a /etc/crontab :

SHELL=/bin/bash
PATH=/opt/jdk1.8.0_25/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
MAILTO=root
HOME=/root
JAVA_HOME=/opt/jdk1.8.0_25

Em segundo lugar, atualizei o script de shell:

#!/bin/bash

export JAVA_HOME=/opt/jdk1.8.0_25
export PATH=$PATH:/opt/jdk1.8.0_25/bin

status="$(curl -s http://www.domain.com/check)"

if [ "$status" != "OK" ]
then
    /opt/apache-tomcat-8.0.15/bin/startup.sh
    /usr/sbin/sendmail [email protected] < email.txt
fi

A entrada em crontab -e eu não toquei em nada.

Obrigado novamente, espero que isso ajude!

    
por 09.01.2015 / 08:10

Tags