【问题标题】:Crontab is not running mysql commandcrontab 没有运行 mysql 命令
【发布时间】:2017-01-18 00:08:39
【问题描述】:

我已经使用crontab -e 设置了一个cronjob,如下所示:

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

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

【问题讨论】:

  • 离题;属于Server Fault 或可能属于Super User
  • 我不太确定,吉姆。根据常见问题解答,cron 和 MySQL 都是“程序员常用的软件工具”。数据库用户不会搞乱 cron 作业,通常只有开发人员会这样做。

标签: mysql cron mysqldump crontab cronexpression


【解决方案1】:

mysql 肯定是 MySQL 的交互界面。

假设您只是在运行mysql 并使用&gt;&gt; 将输出附加到您的文件中,那么当它第一次尝试从标准输入读取时,它可能会得到一个文件结尾并退出。

也许您可能想考虑为其提供一个处理命令,例如:

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

【讨论】:

  • 那么不能通过 cron 运行 mysql 命令吗?实际上,我将在 shell 脚本中运行 mysql 命令,而该脚本又将通过 cron 运行。
  • 不,有可能,我已经更新了答案以显示如何(从记忆中)。从cron交互方式 的方式进行操作是不可能的。
【解决方案2】:
12 22 * * * /usr/bin/mysql >> < FILE PATH > 2>&1

将您的错误消息重定向到同一个文件,以便您对其进行调试。

还有一个很好的 article 关于如何调试 cron 作业: How to debug a broken cron job

【讨论】:

    猜你喜欢
    • 2014-12-03
    • 2011-10-22
    • 2018-07-17
    • 1970-01-01
    • 2020-05-27
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多