Shell script – monitorar processo traccar e iniciar automaticamente quando cair

Adson Silva6 years ago

Olá, tentei implantar esse script na crontab mas o processo da erro, pode explicar o que há de errado?

!/bin/bash
Script para monitorar processo.
Para que a função de e-mail funcione, você deverá ter o SMTP ativo no servidor.

Defina neste campo, o nome do processo a ser filtrado.
PROCESSO=service.traccar
Intervalo que será feita a checagem (em segundos).
INTERVALO=10
while true; do
       Número de cópias do processo rodando - Explicação.
      OCORRENCIAS=`ps ax | grep $PROCESSO | grep -v grep| wc -l`
      if [ $OCORRENCIAS -eq 0 ]; then
                  Se o número de processos rodando é 0, executa novamente a aplicação e notifica a área de TI - Explicação
				 # Caso sua aplicação não esteja no /etc/init.d/ altere o caminho de forma que lhe atenda.
                 sudo systemctl restart traccar.service 
                 tail -n 20 /var/log/log_do_processo.log |mail -s "Alerta! O processo processo foi reiniciado" seuemail@suaempresa.com
       fi
        Aguarda o intervalo especificado na variável e executa novamente o script.
        sleep $INTERVALO
done
Fim do Script
Slawek6 years ago
  1. make file 'monitor' save in /bin (give permissions)
#!/bin/bash

service=$@
	systemctl -q is-active "$service.service"
status=$?
if [ "$status" == 0 ]; then
    echo "OK"
else
	systemctl start "$service.service"
fi
  1. Add a cronjob
crontab -e

*/5 * * * *  monitor traccar > /dev/null 2>&1
Carlos Colque5 years ago

Hola, consulta.... en vez de "$service.service" deberia ir "traccar.service"?
gracias.

Adson Silva5 years ago

essa foi a solução que encontrei

coloquei um arquivo "monitor" na pasta opt

#!/bin/bash

service=$@
systemctl -q is-active traccar.service
status=$?
if [ "$status" == 0 ]; then
echo "OK"
else
systemctl restart traccar.service
fi

Add a cronjob
crontab -e

*/5 * * * * /opt/monitor