Я написал сценарий оболочки для запуска сервера mysql и отправки письма пользователю с правами администратора, если он перезапускается через сценарий оболочки. С чем я столкнулся с проблемой, если я запустил этот сценарий оболочки на терминале, он работает отлично. Если тот же сценарий запускается через cronjob, он отправляет только почту пользователю, и проблема остается той же. Связана ли эта проблема с разрешением, и как я могу ее решить.
Скрипт оболочки --------
#!/bin/bash
EMAIL="abc@xyz.com"
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.
Просто подумайте, но вы можете посмотреть на что-то вроде контролировать. Он специально разработан для этой цели.
В любом случае, как вы настроили задание cron? Вы создали файл в /etc/cron.d/
вы создали это используя crontab -e
используя свою обычную учетную запись пользователя или как? Я хочу предположить, что вы настроили свою cronjob как пользователь без достаточных прав.
Кажется, это проблема среды, используйте полный путь для двоичного файла, например msmtp, чтобы решить вашу проблему.
Ваш сценарий имеет ту же роль, что и / usr / bin / mysqld_safe, может быть, вам лучше взломать mysqld_safe, чтобы отправить вам электронное письмо.