我制作了一个非常简单的脚本来确保我的重要服务处于活跃状态。
#!/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