Я использую скрипт bash (sync.sh), используемый cron, который должен синхронизировать файл с базой данных MySQL. Он работает, копируя файл из автоматически загруженного местоположения, анализируя его, вызывая SQL-скрипт, который вызывает другие встроенные скрипты MySQL, а в конце - текстовый файл отчета в виде вложения.
Но, похоже, что-то не работает, так как ничего не происходит с базами данных MySQL. Выполняются все остальные команды (первая строка и последняя строка: копирование исходного файла и отправка по электронной почте). Команда MySQL при работе отдельно работает отлично. Сервер Ubuntu 16.04. Задача Cron запускается как пользователь root, а скрипт является частью crontab для пользователя root.
Вот сценарий:
#!/bin/bash
cp -u /home/admin/web/mydomain.com/public_html/dailyxchng/warehouse.txt /var/lib/mysql-files
mysql_pwd=syncit4321
cd /home/admin/web/mydomain.com/sync
mysql -u sync -p$mysql_pwd --database=database_name -e "call sp_sync_report();" > results.txt
echo "<h2>Report date $(date '+%d/%m/%Y %H:%M:%S')</h2><br/><br/> <strong>results.txt</strong> is an attached file which contains sync report." | mutt -e "set content_type=text/html" -s "Report date $(date '+%d/%m/%Y %H:%M:%S')" -a results.txt -- [email protected]
cron выполнит сценарий, используя очень разделенную среду. вы, вероятно, хотите добавить полный путь к команде mysql для скрипта cron
вы можете найти полный путь
which mysql
в приглашении, или вы можете добавить расширенный путь к вызову cron
1 2 * * * PATH=/usr/local/bin:$PATH scriptname
/usr/bin/mysql