我使用crontab -e
设置了一个cronjob,如下所示:
12 22 * * * /usr/bin/mysql >> < FILE PATH >
这不会运行mysql命令。它只创建一个空白文件。 而mysqldump命令是通过cron运行的。 问题是什么?
答案 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作业还有一个很好的article: How to debug a broken cron job