我已经建立了使用crontab -e
一个cronjob如下:crontab的不运行mysql命令
12 22 * * * /usr/bin/mysql >> < FILE PATH >
这不运行mysql命令。它只会创建一个空白文件。 虽然mysqldump命令正在通过cron运行。 问题是什么?
我已经建立了使用crontab -e
一个cronjob如下:crontab的不运行mysql命令
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命令,这应该也可以。一个选择是与这里-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
那么是不是可以通过cron运行mysql命令?实际上,我将在shell脚本中运行mysql命令,该命令将通过cron运行。 – user1180463
不,这是可能的,我已经更新了答案以显示(从内存)。不可能的是从'cron'这样做_interactively_。 – paxdiablo
12 22 * * * /usr/bin/mysql >> < FILE PATH > 2>&1
。重定向错误信息到同一个文件,这样就可以进行调试。
也有关于如何调试cron作业的好article: How to debug a broken cron job
题外话;属于[sf]或可能[su] –
我不那么确定,Jim。按照常见问题,cron和MySQL都是“程序员常用的软件工具”。数据库_users_不会与cron作业混淆,通常只有开发人员这样做。 – paxdiablo