У меня есть сценарий оболочки linux, который при запуске из командной строки работает отлично, но когда планируется запустить через crontab, он не дает желаемых результатов.Сценарий оболочки не работает должным образом
Сценарий довольно прост, он проверяет, работает ли mysql-proxy или нет, проверяя, найден ли его pid с помощью команды pidof. Если обнаружено, что он выключен, он пытается запустить прокси.
# Check if mysql proxy is off
# if found off, attempt to start it
if pidof mysql-proxy
then
echo "Proxy running."
else
echo "Proxy off ... attempting to restart"
/usr/local/mysql-proxy/bin/mysql-proxy -P 172.20.10.196:3306 --daemon --proxy-backend-addresses=172.20.10.194 --proxy-backend-addresses=172.20.10.195
if pidof mysql-proxy
then
echo "Proxy started"
else
echo "Proxy restar failed"
fi
fi
echo "==============================================="
Сценарий сохраняется в файле check-sql-proxy.sh и имеет права доступа к . Когда я запускаю скрипт из командной строки (sh check-sql-proxy.sh), он дает желаемый результат.
4066
Proxy running.
===============================================
Сценарий также планируется запустить через каждые 5 минут в кронтаб, как
*/5 * * * * bash /root/auto-restart-mysql-proxy.sh > /dev/sql-proxy-restart-log.log
Однако, когда я вижу SQL-прокси-рестарт-log.log файл содержит вывод:
Proxy off ... attempting to restart
Proxy restar failed
===============================================
кажется, что pidof команда не возвращает идентификатор процесса запущенного приложения, которое приносит поток сценария в другом состоянии.
Я не могу понять, как это решить, поскольку, когда я запускаю скрипт вручную, он отлично работает.
Может ли кто-нибудь помочь, что мне не хватает в отношении разрешений или настроек?
Заранее спасибо. Mudasser
Разрешения не должны устанавливаться на 777; что позволяет любому пользователю редактировать вашу команду, когда захочет.Сделать все, что вы можете сделать. Как 'rm -fr/home/you'. –