Bash脚本结果通过Cron不同

时间:2018-02-05 23:39:34

标签: linux bash cron

我对bash脚本编程比较陌生,但是我编写了一个小脚本,用于检查服务的状态,如果没有运行则重新启动它。 cron中的设置很好并且正在运行,我遇到的问题是设置变量“STATUS”,如下面的代码所示。当我从提示符运行脚本时它运行正常,但是当它通过cron运行时,STATUS变量不会被设置。谁能告诉我这里发生了什么?

谢谢!

#!/bin/bash

STATUS=$(service nagios status)
DATE=$(date)

if [ "$STATUS" == "No lock file found in /var/run/nagios.pid" ]
then
service nagios start
echo "$DATE - Stopped - $STATUS" >> /var/log/nagios/nagios_check.log
elif [ "$STATUS" == "nagios is not running" ]
then
service nagios start
echo "$DATE - Stopped - $STATUS" >> /var/log/nagios/nagios_check.log
else
echo "$DATE - Running - $STATUS" >> /var/log/nagios/nagios_check.log
fi

1 个答案:

答案 0 :(得分:2)

要做的第一件事就是检查你的路径。您的cron环境具有最小的设置 - 它不是您的用户BASH环境的模拟。您可能希望使用' service'的完整路径,例如

STATUS=$(/usr/sbin/service nagios status)  

有关cron BASH环境的更详细说明: https://serverfault.com/questions/698577/why-is-the-cron-env-different-from-the-users-env