2012-08-24 59 views
0

我已经建立了使用crontab -e一个cronjob如下:crontab的不运行mysql命令

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

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

+0

题外话;属于[sf]或可能[su] –

+0

我不那么确定,Jim。按照常见问题,cron和MySQL都是“程序员常用的软件工具”。数据库_users_不会与cron作业混淆,通常只有开发人员这样做。 – paxdiablo

回答

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命令,这应该也可以。一个选择是与这里-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 
+0

那么是不是可以通过cron运行mysql命令?实际上,我将在shell脚本中运行mysql命令,该命令将通过cron运行。 – user1180463

+0

不,这是可能的,我已经更新了答案以显示(从内存)。不可能的是从'cron'这样做_interactively_。 – paxdiablo

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

。重定向错误信息到同一个文件,这样就可以进行调试。

也有关于如何调试cron作业的好articleHow to debug a broken cron job