【发布时间】:2018-07-25 06:18:43
【问题描述】:
我正在使用 cron 使用的 bash 脚本 (sync.sh),它应该将文件同步到 MySQL 数据库。它的工作原理是从自动上传的位置复制文件,通过调用 SQL 脚本来解析它,该脚本调用其他 MySQL 内部存储的脚本,最后通过电子邮件将报告文本文件作为附件发送。
但是,似乎有些东西不起作用,因为 MySQL 数据库没有任何反应。执行所有其他命令(第一行和最后一行:复制初始文件和电子邮件发送)。 单独运行时的 MySQL 命令可以完美运行。 服务器是 Ubuntu 16.04。 Cron 作业以 root 用户身份运行,脚本是 root 用户的 crontab 的一部分。
这是脚本:
#!/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 -- recipient@mydomain.com
【问题讨论】:
-
能否添加用于调用脚本的 crontab 行?
-
你试过把 /usr/bin/mysql 换成 mysql 吗?
-
@A.Villegas Crontab 命令是:55 2 * * * /home/admin/web/mydomain.com/sync/sync.sh
-
@nacho 我没有。我应该试试吗?
-
@Wed 您是否将您的 cron 添加到具有权限的用户中?您可以尝试按照
55 2 * * * /home/admin/web/mydomain.com/sync/sync.sh >> /var/log/test.log 2>&1记录您的 cronjob 输出并共享文件输出吗?
标签: mysql bash shell ubuntu cron