通过 crontab 运行 bash 脚本会产生不同的结果

通过 crontab 运行 bash 脚本会产生不同的结果

我制作了一个非常简单的脚本来确保我的重要服务处于活跃状态。

#!/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,后三行来自手动启动...这真的让我很恼火,我不知道哪里出了问题...有什么想法吗?

答案1

可能未找到服务。

您可能需要指定 SHELL 和 PATH 变量,例如

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

在你添加之前

0 10 * * * /usr/bin/service-check

相关内容