【问题标题】:mysqldump cron can't use character >mysqldump cron 不能使用字符 >
【发布时间】:2018-05-24 23:12:05
【问题描述】:

我正在尝试使用 cron 作业任务来备份我的数据库,但是当我尝试在 cron 作业中添加脚本时,它会显示如下错误消息:

无法设置字符">"

这是我正在使用的脚本:

mysqldump -u "username" --password='****' --no-create-info --no-tablespaces "username" > /home/"username"/public_html/_backup/db__$(date +\%Y-\%m-\%d_\%H_\%M_\%S).sql

如果我通过 SSH 控制台运行相同的脚本,它会很好地创建文件,但由于此错误,我无法创建 cron。

由于我在共享主机上,我无法使用其他php函数,例如exec(),因为出于安全原因,它们默认被阻止。

支持人员说我应该转义该字符,因为它们是不允许的,但随后脚本因无效而失败。有没有办法解决这个问题?

【问题讨论】:

  • 如果你把那行放在一个shell脚本中并从cron调用它,它会工作的。或者,您可以执行“/bin/sh -c ...”,但这会让您感到头疼。另请注意,由 cron 调用的命令只有非常有限的环境

标签: mysql cron cron-task


【解决方案1】:

cron 只是尝试在不调用 shell 的情况下启动命令行。输出重定向是 shell 的一项功能,mysqldump 命令无法理解。

现在你有两个选择:

  1. 使用类似“/bin/sh -c 'mysqldump ...'”的结构,这将 可能因为引用问题而引起严重的头痛
  2. 将命令存储在 shell 脚本中(不要忘记创建它 可执行文件)并从 cron 执行脚本。

后一种方法具有额外的优势,您可以轻松定义确切的执行环境。 cron 通常只定义很少的环境变量,这可能很痛苦。在您的脚本中,您可以获取 $HOME/.bashrc(或任何其他文件)、设置路径变量等。

【讨论】:

    猜你喜欢
    • 2017-07-09
    • 2010-12-29
    • 1970-01-01
    • 2015-12-05
    • 2013-03-29
    • 2015-11-30
    • 1970-01-01
    • 2011-10-15
    相关资源
    最近更新 更多