Redirecionar a saída do cron em tempo real, não após o término do programa?

1

Eu tenho um script ruby que grava em STDOUT e, às vezes, em STDERR. Eu estou executando este script a cada 5 minutos através de um crontab:

*/5 * * * * /root/myscript.rb >> /var/log/myscript.log 2>&1

O que eu notei é que o arquivo de log não será gravado em tempo real. Em vez disso, ele aguarda até que o script seja encerrado e, em seguida, tudo de uma vez escreve nesse arquivo de log. Eu sinto que tenho outros scripts que não têm esse comportamento, mas talvez eu esteja enganado.

É assim que funciona? Há algo que eu deveria procurar para mudar esse comportamento?

Este é o Ubuntu 12.04

    
por Brian 25.07.2013 / 15:52

2 respostas

1

Tenha seu log de script no syslog em vez de stdout. Fazer isso é uma solução muito mais flexível a longo prazo do que o logging para stdout.

    
por 25.07.2013 / 16:10
1

Ah, descobri que o Ruby não libera automaticamente a saída STDOUT / STDERR após cada chamada de gravação. Coloquei STDOUT.sync = true no topo do meu arquivo e agora ele grava no STDOUT e, portanto, no arquivo de log, em tempo real.

    
por 25.07.2013 / 16:15