【发布时间】: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