Что не так с этим скриптом bash (cron + mysql)

0

Я использую скрипт 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]
  • 0
    Не могли бы вы добавить строку crontab, которую вы используете для вызова скрипта?
  • 0
    Вы пытались поставить / usr / bin / mysql вместо mysql?
Показать ещё 6 комментариев
Теги:
cron

1 ответ

2
Лучший ответ

cron выполнит сценарий, используя очень разделенную среду. вы, вероятно, хотите добавить полный путь к команде mysql для скрипта cron

вы можете найти полный путь

which mysql

в приглашении, или вы можете добавить расширенный путь к вызову cron

1 2 * * * PATH=/usr/local/bin:$PATH scriptname
  • 0
    Это должен быть /usr/bin/mysql
  • 0
    да, я пытался указать, что среда cron будет удалена, поэтому вам нужно указать полные пути, указав неверный путь, постер увидит ошибку, и, предоставив решение для поиска правильного пути, постер исправит ошибка. Дайте плакат инструменты, а не ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню