A execução do script bash através do crontab resulta em resultados diferentes

0

Eu fiz um script muito simples para garantir que meus serviços importantes estejam ativos.

#!/bin/bash
services=(apache2 sendmail mysql)
for service in "${services[@]}"
do
        if [[ $(service $service status | grep running) ]]; then
                echo $service " is active" >> /home/user/logging.txt
        else
                echo "!!!!" $service " is not active!!!!" >> /home/user/logging.txt
        fi
done

Quando executo o script manualmente, tudo funciona bem, os serviços ativos são registrados como ativos e os serviços inativos são registrados como inativos.

Para automatizar o script, fiz uma entrada no crontab:

0 10 * * * /usr/bin/service-check

O script é executado, mas a saída gerada no arquivo de registro não está correta! A saída no loggingfile diz para cada serviço: !!! servicename is not active !!!

eu repeti as etapas várias vezes o mesmo resultado novamente ...

Saída do arquivo de registro:

!!!! apache2  is not active!!!!
!!!! sendmail  is not active!!!!
!!!! mysql  is not active!!!!
apache2  is active
sendmail  is active
mysql  is active

As três primeiras linhas são do crontab, as três últimas do início manual ... Isso realmente moer minhas engrenagens e eu não consigo descobrir o que está errado ... alguma idéia?

    
por moe 05.10.2017 / 12:13

1 resposta

0

Pode não estar encontrando serviço.

Pode ser necessário especificar variáveis SHELL e PATH, como

SHELL=/bin/bash; 
PATH=<copy from your current $PATH that works>

antes de adicionar, por exemplo,

0 10 * * * /usr/bin/service-check
    
por isantana.bio 26.10.2017 / 03:10