O trabalho do Cron está gravando o erro no log de erros, mas falha ao gravar as saídas no arquivo de log de saída

3

Eu tenho 2 códigos python que eu programo usando o cron. Meus códigos realmente funcionam das 10h30 às 16h20 todos os dias. das 10h30 às 11h, meus códigos geram de 2 a 3 linhas a cada minuto e, depois disso, começam a produzir de 30 a 40 linhas por minuto. Eu agendei meus códigos assim.

30 10  * * 1-5 cd /home/alpha/IBpy && python LongData.py >> /home/alpha/logs/Longdata.op 2>> /home/alpha/logs/Longdata.er
31 10  * * 1-5 cd /home/alpha/IBpy && python ShortData.py >> /home/alpha/logs/Shortdata.op 2>> /home/alpha/logs/Shortdata.er

agora o problema é: Meus programas estão funcionando bem, eles estão fazendo tudo que deveriam fazer. Se ocorrer algum erro, eles imediatamente gravam o erro no arquivo de log de erros, mas não estão nem escrevendo uma única linha no arquivo de saída. Eu chequei quase todos os posts possíveis que podem me ajudar aqui e no stackoverflow, mas infelizmente nenhum deles me ajudou. no entanto, se eu iniciar os mesmos programas às 11:00 (quando o programa começar a gerar 30-40 linhas) em vez de 10:30 tudo funciona bem. Eu realmente não sei que coisa errada estou fazendo. Eu não deveria começar meu programa em 11. Qualquer ajuda seria apreciada.

    
por Chiyaan Suraj 23.04.2015 / 19:40

2 respostas

2

Parece que eu tenho esse problema, pois os dados para stdout estavam em buffer. De acordo com este post eu mudei meu trabalho cron para

31 10  * * 1-5 cd /home/alpha/IBpy && stdbuf -i0 -o0 -e0 python ShortData.py >> /home/alpha/logs/Shortdata.op 2>> /home/alpha/logs/Shortdata.er

e tudo está funcionando bem agora.

    
por 24.04.2015 / 07:50
1

Sua sintaxe deve funcionar em (ba)sh . Verifique a documentação do shell padrão no seu sistema para obter a sintaxe adequada. Observe que shells diferentes têm suporte diferente para redirecionamentos. Por exemplo, em csh você não pode redirecionar stderr para stdout .

Se este não for o caso, vou dizer que é um bug no próprio script python. Se você está verificando a hora / data dentro de seus scripts python, certifique-se de obter o formato de hora correto.

    
por 23.04.2015 / 21:43