如果没有运行,Shell脚本启动Mysql服务器

我写了一个shell脚本来启动mysql服务器,并通过shell脚本重新发送邮件给pipe理员用户。 如果我在terminal上运行这个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服务器上的用户。

这似乎是一个环境问题,使用像msmtp二进制的完整path应该解决您的问题。

你的脚本和/ usr / bin / mysqld_safe的angular色是一样的,也许你最好是让mysqld_safe给你发邮件。

只是一个虽然,但你可能要看看像monit 。 它是专门为此目的而devise的。

无论如何,你如何设置cronjob? 你在/etc/cron.d/创build了一个文件吗?是否使用crontab -e使用普通用户帐户创build了一个文件? 我很想猜测你把cronjob设置成没有足够权限的用户。