• Uncategorized

About bash : Percent-sign-not-working-in-crontab

Question Detail

I have a cron issue with curl:

curl -w "%{time_total}\n" -o /dev/null -s http://myurl.com >> ~/log

works great and add a line in log file with total_time.

But the same line with cron doesn’t do anything.

It’s not a path problem because curl http://myurl.com >> ~/log works.

Question Answer

% is a special character for crontab. From man 5 crontab:

The “sixth” field (the rest of the line) specifies the command to be
run. The entire command portion of the line, up to a newline or a
“%” character, will be executed by /bin/sh or by the shell specified
in the SHELL variable of the cronfile. A “%” character in the
command, unless escaped with a backslash (\), will be changed into
newline characters, and all data after the first % will be sent to
the command as standard input
.

So you need to escape the % character:

curl -w "%{time_total}\n" -o /dev/null -s http://myurl.com >> ~/log

to

curl -w "\%{time_total}\n" -o /dev/null -s http://myurl.com >> ~/log
         ^

You may also like...

Leave a Reply

Your email address will not be published.

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