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.
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
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.
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.