Crontab没有运行mysql命令

时间:2012-08-24 05:16:19

标签: mysql cron mysqldump crontab cronexpression

我使用crontab -e设置了一个cronjob,如下所示:

12 22 * * * /usr/bin/mysql >> < FILE PATH >

这不会运行mysql命令。它只创建一个空白文件。 而mysqldump命令是通过cron运行的。 问题是什么?

2 个答案:

答案 0 :(得分:2)

当然mysql是MySQL的交互式界面。

假设您刚刚运行mysql并使用>>将输出附加到文件中,第一次尝试从标准输入读取时,它可能会获得文件结束并退出。

也许您可能想考虑提供一个命令来处理它,例如:

12 22 * * * /usr/bin/mysql
                -u me
                -p never_you_mind
                -e "select * from my_table"
                -D my_database
                >>/home/me/output_file

(为了便于阅读,分为多行,但应该在一行上。)

顺便说一下,这并不过分安全,因为在进程运行时,ps可能会显示您的密码。由于这只是一个例子,我并不太担心,但是如果沿着这条路走下去,你应该考虑将密码存储在一个安全的my.cnf文件中。

在从cron运行shell脚本方面,后者又执行MySQL命令,这也应该可行。一个选择是使用here-doc:

/usr/bin/mysql -u me -p never_you_mind -D my_database <<EOF
    select * from my_table
    select * from my_other_table where id = 74
EOF

答案 1 :(得分:0)

12 22 * * * /usr/bin/mysql >> < FILE PATH > 2>&1

将错误消息重定向到同一文件,以便进行调试。

关于如何调试cron作业还有一个很好的articleHow to debug a broken cron job