Mysqldump在linux上通过cron运行时创建空文件

时间:2011-02-14 18:13:34

标签: mysql bash mysqldump

我有一个运行mysqldump的bash脚本mysql_cron.sh

#!/bin/bash
/usr/local/mysql/bin/mysqldump -ujoe -ppassword > /tmp/somefile

这很好用。然后我从cron调用它:

20 * * * * /home/joe/mysql_cron.sh

并创建文件/ tmp / somefile,但文件始终为空。我试过添加一个

source /home/joe/.bash_profile 

到脚本以确保cron具有正确的env变量,但这没有帮助。我看到很多其他人遇到这个问题,但没有找到解决办法。我也试过'>' crontab中的运算符将任何cron错误捕获到文件中,但这似乎不会产生任何错误。欢迎任何疑难解答。谢谢!

2 个答案:

答案 0 :(得分:6)

将错误信息的输出添加到文件中(如Damp所说),以便您可以检查是否有任何错误:

#!/bin/bash
/usr/local/mysql/bin/mysqldump -ujoe -ppassword > /tmp/somefile 2>&1

如果有一些提示,你也可以在/var/log查看MySQL的日志文件。

答案 1 :(得分:1)

将此行添加到您的脚本中,并比较从cron运行它与直接运行它之间的结果:

env > /tmp/env.$$.out

$$将在生成的文件名中被父进程的PID(cron或shell)替换。您应该能够diff这两个文件,看看这两个环境之间是否存在重大差异。