【问题标题】:Script that does mysql commands not working with cron job执行 mysql 命令的脚本不适用于 cron 作业
【发布时间】:2017-10-26 10:15:26
【问题描述】:

我有一个 bash 脚本,它从 FTP 抓取文件,解压缩,将其插入 MySQL 数据库,然后对该数据库执行一些查询。现在脚本在我手动运行时完美运行,但我需要每天在特定时间运行它。所以我当然把它放在一个 cron 工作中。现在我知道 cron 正在运行,因为在脚本的末尾我让它在日志文件中回显一行并且它一直在这样做。但是,脚本中没有执行 MySQL 命令。

基本上它会从 ftp 抓取文件,然后解压缩,然后不加载文件或执行 mysql 命令,然后将文件移动到不同的目录并回显我的日志。

TLDR:我的 bash 脚本包含 bash 命令和 MySQL 只会在放入 cron 时执行 bash 命令。手动运行时会执行所有命令。

【问题讨论】:

  • 你能给我们看看mysql查询吗?
  • 有多个但只有一个:for f in /root/XXXX/*.txt do mysql -e "LOAD DATA LOCAL INFILE '"$f"' INTO TABLE XXX FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES" -uXXX -pXXX --database=XXXXX done

标签: mysql bash cron


【解决方案1】:

当您在命令行上运行该脚本以及由 cron 作业运行该脚本时,您是否确信该脚本以同一用户身份运行?很可能不是,很可能甚至不是同一个组..您可能需要调整脚本以 sudo 对其他用户,并检查环境变量..

【讨论】:

  • 我想就是这样!太感谢了!我会尝试一下,看看它是否有效。编辑:我只是做了一个脚本来做一个简单的选择并为它添加了一个 cronjob 并且它工作了,很遗憾不是这样。
  • 嗯。并且您在两种方法中都以相同的 mysql 用户身份登录?另外,我发现不同时间范围的 cron 作业在 debian 中运行的方式可能不一样,这也让 ubuntu 怀疑,所以你确定你的测试完全准确吗?我仍然会考虑一些用户不兼容而不是你的脚本有什么问题,显然......
  • 也检查一下这个角度,@MichaelJC stackoverflow.com/questions/29086371/…
  • 我实际上是在为所有这些@George M 使用 root
  • 那么它必须是一个不同的环境设置。你能把你能想到的每一个变量都写到一个日志文件中吗?你能添加丰富的调试语句并记录下来吗?显然您确实可以访问日志文件,对吗?抱歉,好像我在你那里一样摸索,希望我有一个明显的解决方案:-)。但恐怕我们都曾在某个时候坐过这条船……
猜你喜欢
  • 2018-05-20
  • 2017-11-12
  • 2011-01-24
  • 1970-01-01
  • 2012-12-31
  • 2016-01-10
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
相关资源
最近更新 更多