Запуск сценария bash через 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

Скрипт выполняется, но вывод, сгенерированный в файле регистрации, неверен! Вывод в файле журнала говорит для каждой службы: !!! 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 в 13:33

2 ответа

Возможно, он не находит службу.

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

0 10 * * * /usr/bin/service-check , вам нужно указать переменные SHELL и PATH, такие как

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

0
ответ дан 18 July 2018 в 05:44

Возможно, он не находит службу.

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

0 10 * * * /usr/bin/service-check , вам нужно указать переменные SHELL и PATH, такие как

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

0
ответ дан 24 July 2018 в 18:25

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

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