Linux 下的 cron 中未执行带有格式化字符串的 date 命令

Linux 下的 cron 中未执行带有格式化字符串的 date 命令

我有以下 crontab:

# m h  dom mon dow   command
* *   * * *   /bin/date                >> /tmp/date.log  2>&1
* *   * * *   /bin/date "+%F_%H-%M-%S" >> /tmp/date2.log 2>&1

第一个命令正确执行。将当前日期写入/tmp/date.log 第二个命令不起作用。/tmp/date2.log永远不会创建。唯一的区别是第二个日期命令有一个格式化字符串作为参数。在 cronjob 之外,第二个日期命令 ( /bin/date "+%F_%H-%M-%S") 工作正常。

造成这种行为的原因是什么?

我的系统:

uname -a

Linux corsair 4.15.0-50-generic #54-Ubuntu SMP Mon May 6 18:46:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

lsb_release -a

Distributor ID: LinuxMint
Description:    Linux Mint 19.1 Tessa
Release:    19.1
Codename:   tessa

答案1

命令中未转义的百分号将被换行符替换,请参阅crontab(5)。您需要在它们前面加上反斜杠。

相关内容