0

crontab -e我已经使用如下方式设置了一个 cronjob :

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

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

4

2 回答 2

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如果您沿着这条路走,您应该考虑将密码存储在一个适当保护的文件中。

就运行一个 shell 脚本而言,cron它反过来执行 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
于 2012-08-24T05:18:11.947 回答
0
12 22 * * * /usr/bin/mysql >> < FILE PATH > 2>&1

将您的错误消息重定向到同一文件,以便您可以调试它。

还有一篇关于如何调试 cron 作业 的好文章:如何调试损坏的 cron 作业

于 2017-01-17T16:08:39.087 回答