Como reiniciar meu servidor automaticamente usando o crontab se eles caírem?

1

Eu tenho um arquivo jar que estou rodando assim no meu Ubuntu 10.10 e então ele inicia meu servidor expositor em segundo plano -

nohup java \
    -jar /pekooz/exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar \
    -c file --fsconfigdir /opt/exhibitor/conf \
    --hostname machineA > exhibitor.out &

Agora estou tentando usar o crontab para verificar se o servidor do expositor está em execução ou não. Se ele não estiver rodando, então comece de novo então eu decidi usar o crontab e fiz os passos abaixo para configurar o crontab -

  1. Criado um novo crontab executando crontab -e .
  2. Adicionada esta linha ao arquivo que acabou de abrir

    */5 * * * * pgrep -f exhibitor || nohup java -jar /pekooz/exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname machineA > exhibitor.out
    
  3. Salve o arquivo e saia do editor.

Então, para o propósito do teste, ver se o meu crontab está funcionando ou não, eu comecei meu servidor de expositores assim primeiro -

$ nohup java \
    -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar \
    -c file --fsconfigdir /opt/exhibitor/conf \
    --hostname machineA > exhibitor.out &
[1] 14401

$ nohup: ignoring input and redirecting stderr to stdout

E então eu configurei meu crontab como mostrado acima com as etapas. Depois disso eu fiz kill -9 14401 para que eu possa ver se meu servidor de expositor está sendo reiniciado automaticamente pelo crontab ou não. E aparentemente, eles não começaram e não vejo nenhum erro também. Abaixo está o log -

$ sudo tail -f /var/log/syslog
Nov  5 17:21:45 machineA crontab[12755]: (cronusapp) BEGIN EDIT (cronusapp)
Nov  5 17:23:17 machineA crontab[12755]: (cronusapp) END EDIT (cronusapp)
Nov  5 17:25:01 machineA CRON[13671]: (root) CMD (  puppet apply /etc/puppet/manifests/motd-stats.pp >>$PUPPET_LOG 2>&1)
Nov  5 17:25:01 machineA CRON[13672]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Nov  5 17:25:01 machineA CRON[13673]: (cronusapp) CMD (pgrep -f exhibitor || nohup java -jar /pekooz/exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname machineA > exhibitor.out)
Nov  5 17:25:01 machineA postfix/pickup[2345]: 2B0D8819F9: uid=78402 from=<cronusapp>
Nov  5 17:25:01 machineA postfix/cleanup[13679]: 2B0D8819F9: message-id=<[email protected]>
Nov  5 17:25:01 machineA postfix/qmgr[25623]: 2B0D8819F9: from=<[email protected]>, size=814, nrcpt=1 (queue active)
Nov  5 17:25:01 machineA postfix/local[13681]: 2B0D8819F9: to=<[email protected]>, orig_to=<cronusapp>, relay=local, delay=0.11, delays=0.07/0/0/0.04, dsn=2.0.0, status=sent (delivered to mailbox)
Nov  5 17:25:01 machineA postfix/qmgr[25623]: 2B0D8819F9: removed

O que estou fazendo de errado aqui? Por que meu crontab não está funcionando? Eu só preciso reiniciar meu servidor de expositores automaticamente se eles caírem de alguma forma.

    
por arsenal 06.11.2014 / 01:42

1 resposta

0

O diretório java in /usr/bin ? O crontab tem um% mínimo dePATH por padrão. Você pode ter que definir JAVA_HOME e PATH no seu crontab:

*/5 * * * * JAVA_HOME=/opt/java/latest;export JAVA_HOME; \
    PATH=$PATH:$JAVA_HOME/bin; \
    pgrep -f exhibitor || nohup java \
    -jar /pekooz/exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar \
    -c file --fsconfigdir /opt/exhibitor/conf --hostname machineA > exhibitor.out
    
por 06.11.2014 / 04:14