Por que isso falha como crontab mas funciona como script [duplicado]

0

Eu quero imprimir uma saída formatada de um arquivo contendo linhas de data, hora, número longo e número longo. Eu defino LC_NUMERIC para UTF e uso os caracteres% bandeira%'d para produzir um agrupamento numérico de milhares.

A seguinte linha no crontab produz um erro de

/bin/sh: -c: line 0: unexpected EOF while looking for  matching '"'

quando o cronjob é executado.

@daily LC_NUMERIC=en_US.UTF-8 /usr/bin/printf "%s %s %'d %'d\n" \
          $(/usr/bin/tail -n 31 /var/log/bandwidth)

Nova linha adicionada para legibilidade

A linha idêntica (sem @daily ) em um script funciona bem.

Eu acho que o cron está sufocando na parte %'d e não consegue encontrar o fechamento " . Por quê?

    
por Nick Coleman 20.10.2012 / 13:28

2 respostas

1

Eu sugiro que você coloque   LC_NUMERIC=en_US.UTF-8 /usr/bin/printf "%s %s %'d %'d\n" $(/usr/bin/tail -n 31 /var/log/bandwidth) em um arquivo e chmod-lo para 770 e colocar esse nome de arquivo lá no crontab.

    
por 20.10.2012 / 13:54
0

Para definir variáveis de ambiente em um arquivo crontab , você precisa colocá-las em sua própria linha. A configuração afetará todos os comandos do cron após essa linha.

LC_NUMERIC=en_US.UTF-8
@daily /usr/bin/printf "%s %s %'d %'d\n" $(/usr/bin/tail -n 31 /var/log/bandwidth)

Mas sem saber o que há em /var/log/bandwidth , é impossível dizer qual é o verdadeiro problema lá.

    
por 20.10.2012 / 13:54