crontab -e
我已经使用如下方式设置了一个 cronjob :
12 22 * * * /usr/bin/mysql >> < FILE PATH >
这不会运行 mysql 命令。它只会创建一个空白文件。而 mysqldump 命令是通过 cron 运行的。问题可能是什么?
crontab -e
我已经使用如下方式设置了一个 cronjob :
12 22 * * * /usr/bin/mysql >> < FILE PATH >
这不会运行 mysql 命令。它只会创建一个空白文件。而 mysqldump 命令是通过 cron 运行的。问题可能是什么?
当然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
12 22 * * * /usr/bin/mysql >> < FILE PATH > 2>&1
将您的错误消息重定向到同一文件,以便您可以调试它。
还有一篇关于如何调试 cron 作业 的好文章:如何调试损坏的 cron 作业