Por que o script bash rsync não está escrevendo nada no arquivo?

1

Ubuntu 9.10

crontab -l

0 1 * * * /root/cron/rsync-93.193.99.111 & > /root/cron/rsync-93.193.99.111.log
0 3 * * * tail -100 /root/cron/rsync-93.193.99.111.log | msmtp [email protected]

ls -l /root/cron/rsync-93.193.99.111.log

-rw-r - r-- raiz raiz /root/cron/rsync-93.193.99.111.log

O arquivo rsync-93.193.99.111.log exibe tamanho zero no Nautilus.
Eu recebo um email, mas está vazio.
Rodando a cauda -100, também mostra a saída do emtpty, então o email está correto.

Por que o script bash rsync não está escrevendo nada no arquivo?

    
por user19496 28.09.2010 / 22:47

2 respostas

2

Eu acredito que é porque &> não é suportado em sh , que é o shell que cron usa. Use o formulário explícito:

0 1 * * * /root/cron/rsync-93.193.99.111 > /root/cron/rsync-93.193.99.111.log 2>&1

Além disso, você pode fazer sudo crontab -e em vez de fazer sudo su , em seguida, crontab -e .

    
por 28.09.2010 / 23:56
1

Concordo com a avaliação de Dennis do seu problema . Mas eu tenho alguns outros pontos para mencionar.

Mais importante, não faça isso:

0 1 * * * some command
0 3 * * * some other command that should run after the first one

E se o primeiro comando demorar mais ou menos de duas horas? Para garantir que o segundo comando seja executado quando o primeiro terminar, coloque-os em uma única linha:

0 1 * * * /root/cron/rsync-93.193.99.111 >/root/cron/rsync-93.193.99.111.log 2>&1; tail -100 /root/cron/rsync-93.193.99.111.log | msmtp [email protected]

Além disso, você pode querer aproveitar a correspondência automática de erros do cron. (Isso pressupõe que seu sistema esteja configurado corretamente para o correio, o que pode não ser o caso se você tiver que executar msmtp em vez de mail .)

[email protected]
0 1 * * * /root/cron/rsync-93.193.99.111 2>&1 | tee /root/cron/rsync-93.193.99.111.log | tail -n 100
    
por 29.09.2010 / 01:57