我有一个运行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错误捕获到文件中,但这似乎不会产生任何错误。欢迎任何疑难解答。谢谢!
答案 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
这两个文件,看看这两个环境之间是否存在重大差异。