代码之家  ›  专栏  ›  技术社区  ›  celsomtrindade

mysqldump cron无法使用字符>

  •  0
  • celsomtrindade  · 技术社区  · 8 年前

    我试图使用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() 因为由于安全原因,它们被默认阻止。

    支持人员说我应该对角色进行转义,因为它们是不允许的,但是脚本失败了,因为它是无效的。有没有办法解决这个问题?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Ronald    8 年前

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

    现在您有两个选择:

    1. 使用“/bin/sh-c‘mysqldump…’”这样的构造,它将 可能因为引用问题而导致严重头痛
    2. 将命令存储在shell脚本中(不要忘记 (可执行)并从cron执行脚本。

    后一种方法还有一个额外的优点,即可以轻松定义精确的执行环境。cron通常只定义很少的环境变量,这可能是一个难题。在脚本中,您可以找到$HOME/。bashrc(或任何其他文件),设置path变量,等等。