%(百分号)在 crontab 中是一个特殊字符,相当于回车,如果命令中包含 %,那么 % 之后的内容将作为标准输入赋值给前面的命令。

如果命令行中需要 %,那就得在 % 前面加一个反斜线“\”来转义,就变成了“\%”, 当然了,如果要用反斜线的话,那就是“\\”这样子啦。

不过,我要在计划任务中添加一个任务,是要每天分析前一天的 apache 日志。日志的文件名,是用命令行参数来指定的。昨天的日志文件名就写成这样子

$(date –date ‘yesterday’ ‘/%Y-%m/access_log_%Y_%m_%d.log’)

比如今天是2007年4月13日,那这条命令的结果就是:

/2007-04/access_log_2007_04_12.log

因为我这是在命令行中指定日志文件的,所以在添加到 crontab 中以后,需要在 % 之前添加反斜线。但是却出现了意外,因为 crontab 把上面的那个命令结果变成了

/\2007-\04/access_log_\2007_\04_\12.log

反斜线竟然还在!

服了他了,我只好把命令写到一个文件里,然后在 crontab 里面调用那个文件了。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.