Comando com símbolos de porcentagem não executando no crontab

11

O seguinte crontab não funciona:

# TEST LINE DOES DOT RUN
*/1 * * * * /bin/echo 'test '`/bin/date +%Y-%m-%d` >> /tmp/test

Eu também tentei iniciá-lo com:

SHELL=/bin/bash

Atualização: Eu pensei que os personagens backtick `eram os vilões, mas como a resposta abaixo esclarece a porcentagem% foi a culpada!

lpanebr
fonte
Sua linha de teste será executada apenas uma vez a cada hora. Pode não ser o que você pretendia testar.
user535733
Não é o primeiro o minuto? # mh dom mon dow command
lpanebr
Você está certo .. Alterei para * / 1 para fazê-lo rodar a cada minuto. O cron está funcionando bem. Há algo com os comandos. Parece ser o/bin/date +%Y-%m-%d
lpanebr

Respostas:

13

Em /bin/date +%Y-%m-%d, você precisa escapar cada %com \de acordo com esta página de manual :

O campo "sexto" (o restante da linha) especifica o comando a ser executado. Toda a parte do comando da linha, até uma nova linha ou caractere%, será executada por / bin / sh ou pelo shell especificado na variável SHELL do cronfile. Os sinais de porcentagem (%) no comando, a menos que sejam escapados com barra invertida (), serão alterados para caracteres de nova linha e todos os dados após o primeiro% serão enviados ao comando como entrada padrão.

DK Bose
fonte
2
obrigado! Vou editar a pergunta para que ela se encaixe no problema real.
lpanebr