mysqldump cron 不能使用字符 >
mysqldump cron can't use character >
我正在尝试使用 cron 作业任务来备份我的数据库,但是当我尝试在 cron 作业上添加脚本时,它会显示如下错误消息:
Can't set character ">"
这是我正在使用的脚本:
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()
,因为出于安全原因它们默认被阻止。
支持人员说我应该转义该字符,因为它们是不允许的,但随后脚本因无效而失败。有办法解决这个问题吗?
cron 只是尝试在不调用 shell 的情况下启动命令行。输出重定向是 shell 的一个特性,mysqldump
命令无法理解。
现在你有两个选择:
- 使用像“/bin/sh -c 'mysqldump ...'”这样的结构,它将
可能因为引用问题而引起严重的头痛
- 将命令存储在 shell 脚本中(不要忘记制作它
可执行文件)并从 cron 执行脚本。
后一种方法的额外优点是您可以轻松定义准确的执行环境。 cron 通常只定义很少的环境变量,这可能会很痛苦。在您的脚本中,您可以找到您的 $HOME/.bashrc(或任何其他文件),设置您的路径变量,等等。
我正在尝试使用 cron 作业任务来备份我的数据库,但是当我尝试在 cron 作业上添加脚本时,它会显示如下错误消息:
Can't set character ">"
这是我正在使用的脚本:
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()
,因为出于安全原因它们默认被阻止。
支持人员说我应该转义该字符,因为它们是不允许的,但随后脚本因无效而失败。有办法解决这个问题吗?
cron 只是尝试在不调用 shell 的情况下启动命令行。输出重定向是 shell 的一个特性,mysqldump
命令无法理解。
现在你有两个选择:
- 使用像“/bin/sh -c 'mysqldump ...'”这样的结构,它将 可能因为引用问题而引起严重的头痛
- 将命令存储在 shell 脚本中(不要忘记制作它 可执行文件)并从 cron 执行脚本。
后一种方法的额外优点是您可以轻松定义准确的执行环境。 cron 通常只定义很少的环境变量,这可能会很痛苦。在您的脚本中,您可以找到您的 $HOME/.bashrc(或任何其他文件),设置您的路径变量,等等。