3

I'm writing files out to a log ran by a bash script using cron. The call on cron looks like this:

*/25 * * * * bash script.sh > "/var/log/$(date +%Y-%m-%d_%H:%M).log"

But when I check the crontab it records as

*/25 * * * * bash script.sh > "/var/log/$(date +).log"

And it never writes the log file. Is there something I need to change to get cron to write the date?

0

1 Answer 1

8

It is a matter of escaping variables:

* * * * * /usr/bin/touch /tmp/$(date +\%Y:\%m).log
#                                      ^   ^

worked to me.

From man 5 crontab:

Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.

So

*/25 * * * * /bin/bash script.sh > "/var/log/$(date +\%Y-\%m-\%d_\%H:\%M).log"
#                                                    ^    ^   ^   ^   ^

should work.

Note I used /bin/bash instead of just bash.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.