【问题标题】:crontab behaviour difference for mysqlmysql 的 crontab 行为差异
【发布时间】:2016-06-27 15:34:25
【问题描述】:

我确实尝试过搜索,但没有找到真正适合我的东西。 所以我会启动这个线程,看看是否有人可以提供帮助。我希望这不是一个愚蠢的问题,我忽略了一些简单的事情。

我有一台运行 MySQL 服务器的 mac mini。

有一天结束的工作,所以我将它们放入脚本中,由 crontab 触发(实际上我也尝试过启动,因为这是 mac OS X,但行为相同)

crontab 是这样的

15 00 * * * /Users/fgs/Documents/database/process_db.sh > /Users/fgs/Documents/database/output.txt 2>&1

脚本是这样的

#!/bin/bash

#some data patching task before everything start

#This sql takes 3 sec

/usr/local/bin/mysql dbname -u root "-ppassword" < /Users/fgs/Documents/database/loadrawdata.sql 

#This sql takes 90 sec

/usr/local/bin/mysql dbname -u root "-ppassword" < /Users/fgs/Documents/database/LongLongsql.sql

#This sql takes 1 sec

/usr/local/bin/mysql dbname -u root "-ppassword" < /Users/fgs/Documents/database/anothersql.sql 

行为:

A.当我直接在终端中执行 shell 脚本时,所有 3 个 sql 都可以工作

B.当我使用 crontab 执行此操作时,90 秒 SQL 不起作用(它是一个插入非常大的连接,所以没有打印输出,我也尝试过 > 输出文件,添加 2>&1,也没有输出),但它之前和之后的 SQL 按预期工作。

C.为了模拟 crontab 行为,我尝试使用

env - /bin/sh

然后手动启动 shell 脚本。

看来,90 秒 longlongsql.sql 只运行了 5 秒,然后跳到下一行。没有显示错误信息

我想知道 crontab 是否有任何超时? (我确实搜索过,但一无所获)

我确实检查了 ulimit 是无限的(在"env - /bin/sh" 内检查,并且也尝试过放入脚本中)

我相信它与 mysql 命令无关,因为它通过运行相同的脚本可以正常工作(我也搜索过这个主题,没有什么有趣的)

只是想知道是否有人可以对我有所了解,方向或任何有帮助的东西。

提前感谢大家。

【问题讨论】:

  • mysql可以读取sql /Users/fgs/Documents/database/LongLongsql.sql 吗?
  • 我相信它可以,当我在 bash 中执行命令时,它在 90 秒后可以正常工作
  • 你有没有测试从命令行启动脚本行# /usr/local/bin/mysql dbname -u root "-ppassword"
  • mysql 还有一个内部调度器(事件)。在那里你也可以开始你的查询
  • 很奇怪。更多的日志/调试/跟踪信息似乎是你唯一的希望。有关一些想法,请参阅stackoverflow.com/a/5738359/620097。将set -x 添加到您的脚本中,然后捕获到文件中,看看是否有任何新内容出现。祝你好运。

标签: mysql linux macos bash cron


【解决方案1】:

不要忘记 cron 将启动一个孤立的 shell,它可能无法读取文件。 我建议将您的 mysql-stuff 放在脚本中。如果你能执行脚本,cron 应该也能执行。

    #!/bin/bash
    /usr/local/bin/mysql dbname -u root "-ppassword" < /Users/fgs/Documents/database/LongLongsql.sq

或者:

    #!/bin/bash
    /usr/local/bin/mysql --user=root --password=xxxxxx -e "/Users/fgs/Documents/database/LongLongsql.sq"

然后从 crontab 调用脚本...

【讨论】:

    猜你喜欢
    • 2017-08-21
    • 2014-09-22
    • 2017-12-20
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多