如果未运行,则启动 Mysql 服务器的 Shell 脚本

如果未运行,则启动 Mysql 服务器的 Shell 脚本

我编写了一个 shell 脚本来启动 mysql 服务器,并在通过 shell 脚本重新启动时向管理员用户发送邮件。我遇到的问题是,如果我在终端上运行此 shell 脚本,它会完美运行;如果通过 cronjob 运行相同的脚本,它只会向用户发送邮件,问题仍然相同。这个问题是否与权限有关?我该如何解决?

Shell 脚本--------

#!/bin/bash
EMAIL="[email protected]"
SERVICE='mysql'
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
   echo "$SERVICE service running, everything is fine"
else
   echo "$SERVICE is not running"
   /etc/init.d/mysql start
cat <<EOF | msmtp -a gmail $EMAIL
Subject: "Alert (Test Server) : Mysql Service is not running (Manually Restarted)"
Mysql Server Restarted at: `date`
EOF
EXIT

我正在使用 msmtp 向 ubuntu 12.04 服务器上的用户发送邮件。

答案1

这似乎是一个环境问题,使用像 msmtp 这样的二进制文件的完整路径应该可以解决您的问题。

您的脚本具有与 /usr/bin/mysqld_safe 相同的作用,也许您最好破解 mysqld_safe 来向您发送电子邮件。

答案2

只是,但你可能想看看类似的东西监控. 它是专为此目的而设计的。

无论如何,您是如何设置 cronjob 的?您是否使用普通用户帐户创建了文件/etc/cron.d/crontab -e还是其他方式?我猜您是以没有足够权限的用户身份设置 cronjob 的。

相关内容