我确实尝试过搜索,但没有任何内容对我有用。 所以我会开始这个帖子,看看是否有人可以提供帮助。我希望这不是一个愚蠢的问题,我忽略了一些简单的事情。
我有一台运行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
行为:
一个。当我直接在终端中执行shell脚本时,所有3个sql都可以正常工作
B中。当我使用crontab执行此操作时,90秒的SQL不起作用(它是一个非常大的连接插入,所以没有打印输出,我也试图&gt;输出文件,添加2&gt;&amp; 1 ,也没有输出),但SQL之前和之后的工作正常。
℃。为了模拟crontab行为,我尝试使用
env - /bin/sh
然后手动启动shell脚本。
看起来,90秒longlongsql.sql
仅运行5秒,并跳到下一行。没有显示错误消息
我想知道crontab是否有任何超时? (我确实搜索过,但一无所获)
我确实检查过ulimit是无限制的(在"env - /bin/sh"
内检查,并且也试图放入脚本中)
我认为它与mysql命令无关,因为它通过运行相同的脚本工作正常(我也搜索了这个主题,并没有什么有趣的)
只是想知道是否有人可以对我有所了解,方向或任何有用的方法。
提前感谢大家。
答案 0 :(得分:0)
不要忘记cron会启动一个孤立的shell,它可能无法读取文件。 我建议将你的mysql-stuff放在脚本中。如果你能够执行脚本,cron也应该能够这样做。
fse.ensureDir(resourcesOutputDirectory, (error) => {
if (error) {
console.err("An error ocurred creating the resources directory " + error.message);
} else {
fse.copy(resourcesInputDirectory, resourcesOutputDirectory, "/**/*.mp3", (err) => {
if (err) {
console.err("An error ocurred moving resource directory to XML exported directory " + err.message);
} else {
console.log("Files has been succesfully copied");
}
});
}
});
或者:
#!/bin/bash
/usr/local/bin/mysql dbname -u root "-ppassword" < /Users/fgs/Documents/database/LongLongsql.sq
然后从crontab中调用脚本......