Запущение скрипта удара через crontab приводит к различным результатам

я сделал действительно простой сценарий, чтобы гарантировать, что мои важные службы активны.

#!/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, последних трех от ручного запуска... Это действительно шлифует мои механизмы, и я не могу выяснить что случилось... идею?

0
задан 5 October 2017 в 03:33

1 ответ

Это не может находить сервис.

Вы, возможно, должны указать SHELL и переменные ПУТИ как

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

перед добавлением, например,

0 10 * * * /usr/bin/service-check
0
ответ дан 2 November 2019 в 04:07

Другие вопросы по тегам:

Похожие вопросы: