я сделал действительно простой сценарий, чтобы гарантировать, что мои важные службы активны.
#!/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
Когда я запускаю скрипт вручную, все хорошо работает, активные службы зарегистрированы как активные и неактивные сервисы, зарегистрированные как неактивные.
Для автоматизации сценария я сделал запись в crontab:
0 10 * * * /usr/bin/service-check
Выполнения сценария, но вывод, сгенерированный в регистрирующемся файле, не корректны! Вывод в loggingfile говорит для каждого Сервиса: !!! servicename is not active !!!
я повторял шаги несколько раз тот же результат снова...
Вывод регистрирующегося файла:
!!!! apache2 is not active!!!!
!!!! sendmail is not active!!!!
!!!! mysql is not active!!!!
apache2 is active
sendmail is active
mysql is active
Первые три строки от crontab, последних трех от ручного запуска... Это действительно шлифует мои механизмы, и я не могу выяснить что случилось... идею?
Это не может находить сервис.
Вы, возможно, должны указать SHELL и переменные ПУТИ как
SHELL=/bin/bash;
PATH=<copy from your current $PATH that works>
перед добавлением, например,
0 10 * * * /usr/bin/service-check