У меня есть скрипт, который проверяет, работает ли служба MySQL на моем сервере Linux. Если я запускаю скрипт вручную, он работает нормально, но когда 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" [email protected] < /dev/null
sudo /sbin/service mysql start
else
echo "mysql is working, Date: $TODAY" >> /scripts/sql_log.txt;
fi
Я использую полный путь к командам. Единственная часть, которую я не понимаю на 100%, это:
if [ "$UP" -ne 1 ];
Что это -ne 1?
Итак, в этом случае MySQL работает: Если я запускаю скрипт вручную, он пишет, что MySQL работает в файле журнала. Но Crontab просто пишет, что MySQL не работает в файле журнала (даже если он работает) и не отправляет почту или что-то в этом роде.
Если служба mysql остановлена и я запускаю скрипт вручную, он отправляет мне электронное письмо и запускает службу, как и должно...
Есть идеи?
service mysql status
, которое должно отправить вам вывод по почте. Тогда вы можете проверить, что он говорит. Это может быть что-то вродеPermission Denied
или дажеbash: service: command not found
В любом случае это должно дать вам некоторые подсказки. - person chw21   schedule 14.04.2015cron
работает с другим$PATH
. - person chw21   schedule 14.04.2015