Я сделал очень простой скрипт для обеспечения того, что мои важные сервисы активны.
#!/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 10 * * * /usr/bin/service-check
, вам нужно указать переменные SHELL и PATH, такие как SHELL=/bin/bash;
PATH=<copy from your current $PATH that works>
Возможно, он не находит службу.
Перед добавлением, например,
0 10 * * * /usr/bin/service-check
, вам нужно указать переменные SHELL и PATH, такие как SHELL=/bin/bash;
PATH=<copy from your current $PATH that works>