百分号%在crontab中不起作用

use*_*822 10 bash cron curl crontab

我有一个cron问题curl:

curl -w "%{time_total}\n" -o /dev/null -s http://myurl.com >> ~/log
Run Code Online (Sandbox Code Playgroud)

效果很好,并在日志文件中添加一行与total_time.

但与cron相同的行没有做任何事情.

这不是一个路径问题,因为curl http://myurl.com >> ~/log工作.

fed*_*qui 13

%是一个特殊的角色crontab.来自man 5 crontab:

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

所以你需要逃避%角色:

curl -w "%{time_total}\n" -o /dev/null -s http://myurl.com >> ~/log
Run Code Online (Sandbox Code Playgroud)

curl -w "\%{time_total}\n" -o /dev/null -s http://myurl.com >> ~/log
         ^
Run Code Online (Sandbox Code Playgroud)