我是 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
最佳答案
首先要做的是检查你的路径。你的 cron 环境有一个最小的设置——它不是你的用户 BASH 环境的模拟。您可能希望使用“服务”的完整路径,例如
STATUS=$(/usr/sbin/service nagios status)
有关 cron BASH 环境的更详细说明: https://serverfault.com/questions/698577/why-is-the-cron-env-different-from-the-users-env
关于linux - 通过 Cron 的 Bash 脚本结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48633277/