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
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?
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