无法执行 cron 中的命令

无法执行 cron 中的命令

我试图配置 rsync 以每天以当天的名称备份目录。

rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +"%a"`

上述命令运行正常,并同步Mon目录中的数据。但是当我将相同的命令复制到计划任务它不工作

13 16 * * * rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +"%a"`

但是当我删除`日期 +"%a"`部分来自计划任务它起作用了。
为什么 cron 没有执行`日期 +"%a"`

答案1

%符号必须用 进行转义\,因为它是结束命令的另一种方式crontab

“第六个”字段(行的其余部分)指定要运行的命令。行的整个命令部分(直到换行符或 % 字符)将由 /bin/sh 或 cronfile 的 SHELL 变量中指定的 shell 执行。除非使用反斜杠 () 进行转义,否则命令中的百分号 (%) 将更改为换行符,并且第一个 % 之后的所有数据将作为标准输入发送到命令。

因此你的crontab代码看起来应该是这样的:

13 16 * * * rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +"\%a"`

资料来源:

答案2

您还可以使用:

13 16 * * * bash -c "rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +'%a'`"

相关内容