log cron job em tempo real

2

Eu tenho um processo em Python que executo todas as noites por meio de um crontab. Ele raspa uma API à qual eu tenho acesso limitado e tem que parar e esperar por uma hora.

Pelas minhas estimativas, o trabalho deve levar de 5 a 6 horas para ser concluído.

No momento, tenho um crontab como tal:

05 01 * * * python3 /home/{my username}/path/to/process/main.py >> /var/log/process_name.log 2>&1

Isso é ótimo e provou mostrar que o arquivo é executado, mas só posso verificar a saída após a execução, o que para mim não é ideal. Considerando o tempo que leva para executar, eu preferiria que o cron registrasse a saída e os erros em tempo real.

Este é um problema um pouco mais agora, já que parece que minhas estimativas estão canceladas e eu posso estar esperando muito mais tempo do que deveria - neste caso eu gostaria de ver o que está sendo registrado para que eu possa entender o porquê.

Existe uma maneira de registrar a saída do cron em tempo real?

    
por Scironic 17.04.2015 / 09:17

1 resposta

1

O que você precisa é de um mecanismo chamado flushing: forçar um processo a gravar sua saída, que, de outra forma, permaneceria em buffer até a conclusão.

Scripts shell são liberados linha por linha. Se você precisar da saída de um script de shell antes de o script ser finalizado, verifique se ele contém uma nova linha.

Programas em Python podem esvaziar explicitamente seu stdout chamando o método flush:

import sys
sys.stdout.flush()
    
por Jos 17.04.2015 / 09:57