备份数据库使用带有日期功能的crontab

发布于 2024-12-01 13:29:40 字数 564 浏览 2 评论 0原文

我可以使用这个命令

mysqldump -u"root"  myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz

,但是当在 ubuntu 上的 crontab 中运行时

* * * * * mysqldump -u"root"  myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz

(这个错误是由函数日期引起的,当我删除它时,crontab 运行良好)

,它会在日志文件中发生这个错误。

ubuntu CRON[xxxx] (user) CMD(mysqldump -u"root"  myDB| gzip > mydb_`date+)
ubuntu CRON[xxxx] (CRON) error ( grandchild #5353 failed with exit status 2)
ubuntu CRON[xxxx] (CRON) info (no MTA installed, discarding output)

I can use this command

mysqldump -u"root"  myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz

but when run in crontab

* * * * * mysqldump -u"root"  myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz

( this error cause by function date, when i remove it , crontab run good )

on ubuntu, it happen this error in log file.

ubuntu CRON[xxxx] (user) CMD(mysqldump -u"root"  myDB| gzip > mydb_`date+)
ubuntu CRON[xxxx] (CRON) error ( grandchild #5353 failed with exit status 2)
ubuntu CRON[xxxx] (CRON) info (no MTA installed, discarding output)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怪我闹别瞎闹 2024-12-08 13:29:40

crontab 命令中的 % 符号将转换为换行符,并且第一个 % 之后的所有数据都将发送到命令的 stdin。将每个 % 替换为 \%

(你只有 4 个时间字段:* * * *;你需要 5 个(你后来解决了这个问题)。)

% signs in a crontab command are converted to newlines, and all data after the first % is sent to the command's stdin. Replace each % with \%.

(And you only had 4 time fields: * * * *; you need 5 (you later fixed the question).)

丢了幸福的猪 2024-12-08 13:29:40

来自 man 5 crontab

“第六”字段(该行的其余部分)指定要执行的命令
运行。

该行的整个命令部分,直到换行符或 %
字符,将由 /bin/sh 或指定的 shell 执行
在 crontab 文件的 SHELL 变量中。

百分号 (%)
命令,除非用反斜杠()转义,否则将被更改为
换行符,第一个 % 之后的所有数据将被发送到
命令作为标准输入。没有办法分割单个命令
一行到多行,如 shell 的尾部“\”。

From the man 5 crontab:

The ``sixth'' field (the rest of the line) specifies the command to be
run.

The entire command portion of the line, up to a newline or %
character, will be executed by /bin/sh or by the shell specified
in the SHELL variable of the crontab file.

Percent-signs (%) in the
command, unless escaped with backslash (), will be changed into
newline characters, and all data after the first % will be sent to the
command as standard input. There is no way to split a single command
line onto multiple lines, like the shell's trailing "\".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文