Tarefa Cron com o comando $ (date) e o redirecionamento não será executado

3

Esta é a tarefa do cron que estou tentando executar todas as noites:

0   20  *   *   *   /data/code/scripts/foo.sh >/root/foo.$(date +%Y-%m-%d-%T).log 2>&1

Quando eu o executo na linha de comando, tudo funciona bem. Mas Cron nem parece tentar executá-lo.

Pensamentos?

    
por Marcus Blankenship 19.12.2011 / 20:21

2 respostas

6

Os símbolos% precisam ser escapados em tarefas agendadas.

Coloque uma barra invertida na frente de cada uma delas.

Edição tardia:

Não tenho certeza de como perdi isso antes, mas você está usando uma sintaxe bash para criar um subshell para executar o comando date . Como o cron não é bash, isso não funcionará. Ele funcionará se você alterar seu cron job para isso:

0   20  *   *   *   /data/code/scripts/foo.sh >/root/foo.'date +\%Y-\%m-\%d-\%T'.log 2>&1

Como alternativa, você pode fazer o redirecionamento de saída de dentro do script ou (se não for apropriado) escrever um script de invólucro que chame o acima e faça o redirecionamento de saída.

    
por 19.12.2011 / 20:24
1

Você também precisará usar o caminho completo para o comando date .

Provavelmente está localizado em /bin/date , você pode verificar onde está na sua caixa com which date .

    
por 20.12.2011 / 08:47

Tags