我有以下 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)。您需要在它们前面加上反斜杠。