我有一个脚本可以检查我的Linux服务器上是否运行了MySQL服务。 如果我手动运行脚本它可以正常工作,但是当crontab运行脚本时会得到不同的结果..
这是我的剧本:
#! /bin/sh
TODAY=$(/bin/date)
UP=$(/sbin/service mysql status| /bin/grep 'SUCCESS' | /usr/bin/wc -l);
if [ "$UP" -ne 1 ];
then
echo "mysql not working, Date: $TODAY" >> /scripts/sql_log.txt;
sudo /bin/mail -s "MySql is DOWN" mail@mail.com < /dev/null
sudo /sbin/service mysql start
else
echo "mysql is working, Date: $TODAY" >> /scripts/sql_log.txt;
fi
我正在使用命令的完整路径。我唯一不理解的部分是:
if [ "$UP" -ne 1 ];
这是什么-ne 1?
所以在这种情况下,MySQL正在运行: 如果我手动运行脚本,它会写入MySQL正在日志文件中运行。 但是Crontab只是写了MySQL没有在日志文件中运行(即使它正在运行)并且它不发送任何邮件或其他东西
如果mysql服务已停止并且我手动运行该脚本,它会向我发送一封电子邮件并按原样启动该服务...
有什么想法吗?
答案 0 :(得分:0)
现在它工作..看起来问题是由于我没有写出命令的完整路径引起的问题。这是我现在使用的脚本,它正在工作:
#! /bin/sh
UP=$(/sbin/service mysql status| /bin/grep 'SUCCESS' | /usr/bin/wc -l);
if [ "$UP" -ne 1 ];
then
sudo /bin/mail -s "MySql is DOWN" mail@mail.com < /dev/null
sudo /sbin/service mysql start
fi